Для проекта в университете я должен создать игру Tic Tac Toe.
У меня есть цикл for
с операторами if
для поиска в двумерном массиве размером 3x3 и возврата, если это X
или O
(enum). Это показывает, какая сторона выиграла игру.
Однако проблема, с которой я столкнулся, заключается в том, что если двумерный массив не завершен, как если бы все 9 полей не были заполнены X
или O
, метод показывает NullPointerException
.
Редактировать: Я должен добавить, что мне требуется, чтобы пустая сетка равнялась null
, поскольку немногие другие модульные тесты предполагают, что grid[][]
инициализируется как null
.
Ошибка:
Exception in thread "main" java.lang.NullPointerException
at TicTacToeImplementation.whoHasWon(TicTacToeImplementation.java:80)
at ApplicationRunner.main(ApplicationRunner.java:24)
Код:
public enum Symbol {
X, O
}
private Symbol winner;
public Symbol whoHasWon() {
for (Symbol xORo : Symbol.values()) {
if ((grid[0][0].equals(xORo) &&
grid[0][1].equals(xORo) &&
grid[0][2].equals(xORo))) {
winner = xORo;
isGameOver = true;
break;
} else if ((grid[1][0].equals(xORo) &&
grid[1][1].equals(xORo) &&
grid[1][2].equals(xORo))) {
winner = xORo;
isGameOver = true;
break;}
else if { //Code carries on to account for all 8 different ways of winning
} else {
isGameOver = true;
}
}
return winner;
}