Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我在对象数组中得到一个空指针错误_Java_Oop_Nullpointerexception_Arr - Fatal编程技术网

Java 我在对象数组中得到一个空指针错误

Java 我在对象数组中得到一个空指针错误,java,oop,nullpointerexception,arr,Java,Oop,Nullpointerexception,Arr,我有一个2D对象数组,我试图存储文本文件中的数据字段“type”,但我得到了一个空指针错误 Cell[][] worldArray = new Cell[40][40]; for (int i = 0; i < worldArray.length; i++) { String line = lines.get(i); String[] cells = new String[40]; cells = line.split(";&q

我有一个2D对象数组,我试图存储文本文件中的数据字段“type”,但我得到了一个空指针错误

 Cell[][] worldArray = new Cell[40][40];
 for (int i = 0; i < worldArray.length; i++) {
        String line = lines.get(i);
        String[] cells = new String[40];
        cells = line.split(";");
        if (cells.length != 40) {
            throw new IllegalArgumentException("There are " + i
                    + " cells instead of the 40 needed.");
        }
        for (int j = 0; j < worldArray[0].length; j++) {
            worldArray[i][j].type = Integer.parseInt(cells[j]);
        }

您已正确初始化对象数组:

Cell[][] worldArray = new Cell[40][40];
但此时数组是空的,没有值。换句话说,在给定的点索引,如i,j,没有单元对象。您需要在这些位置输入新的单元对象。因此,在您的代码中:

for (int j = 0; j < worldArray[0].length; j++) {
        worldArray[i][j].type = Integer.parseInt(cells[j]);
}
for(int j=0;j

执行
worldary[i][j]操作时,您将获得一个NPE。键入
是因为
worldary[i][j]
在您为其设置值之前为空。有关处理对象数组的示例,请参见此处:

显示worldArray的初始化。您确定它已正确初始化吗?另外,为了安全起见,在for循环中,应该一直到
j
。这是我的初始化单元格[][]worldArray=new Cell[40][40];第二个“for”有问题“for(int j=0;j单元格
对象。您可以使用
worldArray[i][j]=newcell()在内部循环中实现这一点假设
单元格
类有一个合适的构造函数。谢谢,我找到了问题
for (int j = 0; j < worldArray[0].length; j++) {
        worldArray[i][j].type = Integer.parseInt(cells[j]);
}