NullPointerException для массива с инициализацией длиной один

1

Это мой метод updateHighScoreRecords():

    public GameRecord[] updateHighScoreRecords(GameRecord[] highScoreRecords, String name, int level, int score) {
    GameRecord[] gameRecord = null;

    if (highScoreRecords.length == 0) {     // Rule one
        gameRecord = new GameRecord[1];
        gameRecord[0].setName(name);
        gameRecord[0].setLevel(level);
        gameRecord[0].setScore(score);
        System.out.println("Role one Done");
    }
    return gameRecord;
}

И это мой класс GameRecord:

public class GameRecord {
private String name;
private int level;
private int score;

public GameRecord(String name, int level, int score) {

    this.name = name;
    this.level = level;
    this.score = score;
}
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
public int getLevel() {
    return level;
}
public void setLevel(int level) {
    this.level = level;
}

public int getScore() {
    return score;
}

public void setScore(int score) {
    this.score = score;
}
}

Но в этой строке есть исключение nullPointer:

gameRecord[0].setName(name);

Зачем?

Я хочу вернуть массив типа GameRecord когда длина highScoreRecords равна нулю.

Теги:
arrays

1 ответ

4
Лучший ответ

Вы никогда не инициализировали нулевой элемент. Сначала вам нужно добавить элемент в нулевую позицию, а затем получить доступ к нему.

 gameRecord[0] = new GameRecord();
 gameRecord[0].setName(name);

Когда вы написали

  gameRecord = new GameRecord[1];

Это означает, что вы просто инициализируете массив для хранения 2 элементов GameRecord. Ничего больше. Первоначально это null. Вам нужно инициализировать каждый элемент, чтобы использовать его дальше. В противном случае они все еще равны нулю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню