我有一个2D阵列,每次开始tic tac toc游戏时我需要“重置”。我调用一个方法并循环遍历数组,将所有元素设置为零。但这会破坏我的程序的目的,因为我需要将所有元素重新为空/ null。
public static char[][] initializeGame(char[][] gameBoard) {
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
gameBoard = null; //<--THIS IS THE THING AM TRYING TO NULL @ gameBoard[row][column]
}
}
return gameBoard;
}
如何将gameBoard
的元素设置为null?
答案 0 :(得分:0)
如果您问如何将2D数组中各个元素的值更改为null,您可以这样做:
gameBoard[row][col] = null;
但是由于你有一个2D char数组,你不能这样做,因为char是一个原始类型,并且不允许有空值。您可以使用不同的char值来表示空,或者您可以使2D数组具有Character对象,但更好的解决方案可能是枚举类型的2D数组,例如:
public enum TicTacToeSquareValue { x, o, empty }
.... later on:
gameBoard[row][col] = TicTacToeSquareValue.empty;
答案 1 :(得分:0)
您不能将char设置为null。您只能将其设置为0. null是指针值,char是原始数值。指针不符合原始值。
所以:
游戏键盘[行] [山口] = 0
应该做的伎俩。
答案 2 :(得分:0)
如果你很懒,你可以重新实例化一个新数组。
gameBoard = new int[3][3];
我不建议使用这种方法,因为如果没有正确收集它,性能会降低并且会泄漏内存。
更优雅的选择是重新初始化整个数组,您不需要将值设置为null
,因为它们的类型为char
for(int r = 0; r < gameBoard.length; r++)
for(int c = 0; c < gameBoard[r].length; c++)
gameBoard[r][c] = '\0'; //Null character
但是,嘿,为什么要编写三行代码呢?当有一个预构建的Java实用程序方法可以帮助你吗?
Arrays.fill(gameBoard, '\0'); //Fills the array with Null characters