处理多维数组

Processing multidimensional array

嘿,由于 println 语句中我的数组值出现 NullPointerException,我无法处理 运行 我的代码。

for (bx=0; bx<=7; bx++) {
    for (by=0; by<=4; by++) {
        rect(bx*BRICK_WIDTH, by*BRICK_HEIGHT, BRICK_WIDTH, BRICK_HEIGHT); 
        int[][] a = {{bx}, {by}};
    }
    println (a[bx][by]);
}

仅根据您 post 编写的代码,我不希望您得到 NullPointerException。我希望你得到 The variable "a" does not exist 错误。

所以我猜你的草图顶部还有另一个 a 变量,如下所示:

int[][] a;

void draw(){
  for (bx=0; bx<=7; bx++) {
    for (by=0; by<=4; by++) {
        rect(bx*BRICK_WIDTH, by*BRICK_HEIGHT, BRICK_WIDTH, BRICK_HEIGHT); 
        int[][] a = {{bx}, {by}};
    }
    println (a[bx][by]);
  }
}

请注意,这就是 post MCVE 对您如此重要的原因,这样我们就不必猜测您的代码在做什么。

如果是这种情况,您的问题是因为 for 循环内的 int[][] a = {{bx}, {by}}; 行声明了一个具有相同名称的 不同 变量.它没有触及 skethc 级别 a 变量。所以草图级 a 变量仍然具有默认值 null,因此当您尝试使用它时 NullPointerException

另请注意,将 a 分配给 for 循环内的任何内容都没有多大意义。要了解原因,请考虑这个更简单的示例:

int x = 0;
for(int i = 0; i < 10; i++){
  x = i;
}
println(x);

您会看到 x 变量只是 "keeps" 我们分配给它的最后一个值。数组也是如此。也许您打算设置数组的特定 index

如果您仍然遇到问题,请 post MCVE。祝你好运。