在java中更改二维数组中的值

时间:2012-01-26 18:45:45

标签: java

我试图创建一个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]);
    }
}

1 个答案:

答案 0 :(得分:1)

你可能得到一个ArrayIndexOutOfBoundsException。这是因为您引用了[row-1][col-1](以及+1),但rowcol可能是0或最大索引,并添加或减去在这些情况下,1将使您尝试引用不存在的索引。

您必须进行检查以确保您引用的索引确实存在。

示例:

if(randomPos==0){
    if(row-1 > 0)
        array[row-1][col] = 1;
}

另外,根据评论,您应该告诉我们您实际看到的内容,以及您如何知道它无法正常工作。如果有任何你无法理解的错误信息(当然首先尝试阅读它们),然后发布它们。