我试图创建一个java程序,在其中,我将能够将值1的位置更改为特定位置到数组中。例如,我在位置[5] [4]中的值为1并且我想要将其移动到下一个(或预览位置)并删除值1并将值0存储到上一个位置。我的问题是我可以移动值1,但我不能从前一个位置删除它(存储到前一个位置的值为0)。我的代码如下:
for (int row = 0; row < 6; row++) {
for (int col = 0; col < 6; col++) {
int randomPosition = r.nextInt(2);
array[row][col] = 0;
array[2][3] = 1;
array[4][4] = 1;
if (array[row][col] == 1) {
array[row][col] = 0;
if (randomPos == 0) {
array[row - 1][col] = 1;
} else if (randomPos == 1) {
array[row][col - 1] = 1;
} else if (randomPos == 2) {
array[row + 1][col + 1] = 1;
}
}
}
}
for (int row = 0; row < cells.length; row++) {
for (int col = 0; col < cells[row].length; col++) {
System.out.print(" " + cells[row][col]);
}
}
答案 0 :(得分:1)
你可能得到一个ArrayIndexOutOfBoundsException。这是因为您引用了[row-1]
和[col-1]
(以及+1),但row
或col
可能是0或最大索引,并添加或减去在这些情况下,1将使您尝试引用不存在的索引。
您必须进行检查以确保您引用的索引确实存在。
示例:
if(randomPos==0){
if(row-1 > 0)
array[row-1][col] = 1;
}
另外,根据评论,您应该告诉我们您实际看到的内容,以及您如何知道它无法正常工作。如果有任何你无法理解的错误信息(当然首先尝试阅读它们),然后发布它们。