我有一个类“俄罗斯方块”,其中一个实例变量是“board”。 “board”是Color对象的2D数组。创建一个tetris对象后,我调用一个设置board尺寸的方法,然后将所有Color对象设置为Default值,也就是Color.blue。
public Tetris(int rows, int cols) {
this.rows = rows;
this.cols = cols;
reset(rows, cols);
}
public void reset(int rows, int cols) {
Color[][] board = new Color[rows][cols];
for(int i = 0; i<this.rows; i++) {
for(int j = 0; j<this.cols; j++) {
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR
}
}
}
不幸的是,当我运行代码时(显然还没有完整发布)我在行上得到一个空指针异常:
board[i][j] = DEFAULT_COLOR; // Color.blue; //DEFAULT-COLOR.
我在做什么有明显的错误吗?
答案 0 :(得分:2)
如果您 发布一个简短但完整的程序来证明问题,那将会有所帮助。您发布的代码不足以引发异常,但我可以看到它可能会发生一些变化。
特别是,我在你的reset
方法中声明一个新的局部变量似乎很奇怪......你还有一个名为{{1}的实例变量}?我怀疑解决方案可能就像将board
的开头更改为:
reset
如果你的真实代码使用局部变量来创建数组,但是然后尝试通过实例变量赋值,那很可能是导致问题的原因。
将board = new Color[rows][cols];
和rows
传递给方法并在一个地方使用这些参数但实例变量cols
和this.rows
中的错误似乎也是错误的循环。为什么要打扰他们?
答案 1 :(得分:-2)
我认为你必须分配这些颜色中的每一种: board [i] [j] = new Color(...