无法在Java 2D Array中指定值 - ArrayIndexOutOfBoundsException

时间:2011-03-14 19:37:28

标签: java arrays indexoutofboundsexception

我在使用Java为2D数组赋值时遇到问题。代码的最后一行theGrid[rowLoop][colLoop] = 'x';引发了ArrayIndexOutOfBoundsException错误。有人可以解释为什么会这样吗?

这是我的代码......

public class Main {
    public static char[][] theGrid;

    public static void main(String[] args) {
        createAndFillGrid(10,10);
    }

    public static void createAndFillGrid(int rows, int cols) {
        theGrid = new char[rows][cols];
        int rowLoop = 0;

        for (rowLoop = 0; rowLoop <= theGrid.length; rowLoop++) {
            int colLoop = 0;

            for (colLoop = 0; colLoop <= theGrid[0].length; colLoop++) {
                theGrid[rowLoop][colLoop] = 'x';
            }
        }
    }
}

1 个答案:

答案 0 :(得分:5)

问题是rowLoop <= theGrid.lengthcolLoop <= theGrid[0].length。它应该是:

rowLoop < theGrid.length

colLoop < theGrid[0].length

错误的原因是因为您的索引达到了数组的长度。因此,如果长度为10,则上升到索引10.这不是数组的有效索引。数组具有从0length - 1的有效索引。