如何删除2D数组中的元素

时间:2014-04-16 18:36:09

标签: java arrays multidimensional-array

我有一个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?

3 个答案:

答案 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