0

我最近一直在学习Java。我有一个疑问,我不确定这是否可以实施。

假设我有一个 GameBoard 类并创建了一个对象数组,

GameBoard[][] board = new GameBoard[4][4];

现在,如果我需要调用 GameBoard 类的非静态方法,是否可以将其调用为,

board.clear(); //clear the squares on the game board

还是我需要单独调用元素?

board[1][1].clear();
board[2][2].clear();

如果可以调用 board.clear(),有没有办法循环遍历数组的元素以在 clear() 方法中清除它们?

4

4 回答 4

2

是的,您必须单独清除所有这些。您的数组只是一个包含许多对象引用的容器,您必须一次访问一个。

希望面向对象编程允许您定义一个clear()可以为您完成此任务的方法。

等待 Java 8 和 lambdas ;)

于 2013-07-27T03:55:47.900 回答
2

board被声明为数组,而不是对象GameBoard

所以它包含的对象GameBoard

当你这样做时,board它是一个数组。当你这样做时board[0][0],输入 is GameBoard,所以你只能通过访问数组的单元格来调用。

于 2013-07-27T03:57:00.493 回答
1

您正在使用以下行初始化一个二维GameBoard实例数组,总共 16 个:

GameBoard[][] board = new GameBoard[4][4];

这个board数组数组将包含null所有元素的值,直到您初始化它们,例如:

board[0][0] = new GameBoard();

或者,在一个循环中:

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4; j++) {
        board[i][j] = new GameBoard();
    }
}

你是对的,你不能直接调用,clear()不是你可以在数组上调用的东西。你想调用或在类似的循环中(但只有在你初始化它们之后,或者你会尝试调用一些东西,然后得到一个)。boardclear()board[i][j].clear()nullNullPointerException

于 2013-07-27T04:01:03.290 回答
0

board 是一个 Object gameBoard 的数组。您需要先限定数组,然后才能使用静态参考

于 2013-07-27T03:58:31.420 回答