2D数组上的空指针异常(Java)

时间:2010-04-13 06:29:26

标签: java arrays exception null pointers

我有一个类“俄罗斯方块”,其中一个实例变量是“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.

我在做什么有明显的错误吗?

2 个答案:

答案 0 :(得分:2)

如果您 发布一个简短但完整的程序来证明问题,那将会有所帮助。您发布的代码不足以引发异常,但我可以看到它可能会发生一些变化。

特别是,我在你的reset方法中声明一个新的局部变量似乎很奇怪......你有一个名为{{1}的实例变量}?我怀疑解决方案可能就像将board的开头更改为:

一样简单
reset

如果你的真实代码使用局部变量来创建数组,但是然后尝试通过实例变量赋值,那很可能是导致问题的原因。

board = new Color[rows][cols]; rows传递给方法并在一个地方使用这些参数但实例变量colsthis.rows中的错误似乎也是错误的循环。为什么要打扰他们?

答案 1 :(得分:-2)

我认为你必须分配这些颜色中的每一种:     board [i] [j] = new Color(...