所以我有一个数组:
Cell[][] grid = new Cell[5][20];
for (int i = 0; i < grid.length; i++){
for(int j = 0; j < grid[i].length; j++)
{
grid[i][j] = new Cell();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,根据我的理解,数组的每个元素都将被制作成一个新的Cell对象.这就是我想要的,但是当我尝试访问特定的元素/单元格时,我得到一个NULL指针错误.
grid[0][1].cellState = 5; //THIS MAKES AN ERROR!! //
Run Code Online (Sandbox Code Playgroud)
为了使它工作,我必须手动实例化它:
grid[0][1] = new Cell();
grid[0][1].cellState = 5;
Run Code Online (Sandbox Code Playgroud)
我只是不明白,是不是for循环为我做这个?在某个点循环之后,i和j将在某一点等于0 1,所以这与做0,1 =新Cell()的基本相同
谢谢你的帮助,我是编程新手.
编辑:
我已经弄清楚了,我是个白痴,说实话,这只是一个让我困扰了好几个小时的愚蠢错误.我试图在for循环中设置单元格状态(因为我只是在测试).因此grid [0] [1] .cellState = 5会在第一个循环上抛出错误,因为它尚未创建.对不起,我没有使用我的大脑,谢谢你们的帮助.
您为2D阵列的每个索引对创建一个Cell对象.
因此,您的代码似乎可以完成工作,但您不会显示所有已执行的代码.所以问题可能在另一个地方.
使用Cell类:
public class Cell {
public int cellState;
}
Run Code Online (Sandbox Code Playgroud)
和一个TestClass
public static void main(String[] args) {
Cell[][] grid = new Cell[5][20];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
grid[i][j] = new Cell();
}
}
grid[0][1].cellState = 5;
System.out.println(grid[0][1].cellState);
}
Run Code Online (Sandbox Code Playgroud)
当我执行此代码时,我得到以下输出:
五