【发布时间】:2014-06-04 19:05:34
【问题描述】:
我一直在尝试初始化一个数组,然后用一个类方法测试它的值。我已经初始化了数组并且已经在构造函数中成功地测试了它,所以看起来数组已经被填充了,但是一旦我尝试在 Main 方法中测试它就会抛出一个 NullPointer 异常。
class PercolGrid {
int sides;
boolean[] grid;
public PercolGrid (int inSides) {
sides = inSides;
//grid = new boolean[] {false,false,false,false,false,
//false,false,false,false,false};
boolean[] grid = new boolean[sides];
for (int i = 0; i < sides; i++) {
grid[i] = false;
System.out.println("Setting " + i + " to " + grid[i]);
}
System.out.println("Checking outside FOR loop, first square is: " + grid[0]);
}
public boolean testSqr (int i) {
System.out.println("Requested index is: " + i);
return grid[i];
}
public static void main(String[] args){
PercolGrid firstGrid = new PercolGrid(10);
System.out.println("Grid created! Checking index ....");
System.out.println("First square is :" + firstGrid.testSqr(0)); // NullPointerException
System.out.println("First square is :" + firstGrid.grid[0]); // and here
}
}
这几乎就像引用的数据存在于构造函数中,但不存在于它之外。当我注释掉for 循环和它上面的boolean[] .... 行,并取消注释我的grid = new boolean[] .... 行时,一切正常,但我想在实例化对象时选择边数。
编辑 - 如果我注释掉第 19 行 (firstGrid.testSqr(0)) 而是运行第 20 行 (firstGrid.grid[0]),也会出现同样的错误。
在我尝试使用 2D 数组做同样的事情之前,这是使用 1D 数组的练习。我错过了什么?
我的输出如下所示:
Setting 0 to false
...
Setting 9 to false
Checking outside FOR loop, first square is: false
Grid created! Checking index ....
Requested index is: 0
java.lang.NullPointerException
at PercolGrid.testSqr(PercolGrid.java:19)
at PercolGrid.main(PercolGrid.java:25)
【问题讨论】:
标签: java arrays methods nullpointerexception