我在用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';
            }
        }
    }
}

最佳答案

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

rowLoop < theGrid.length




colLoop < theGrid[0].length


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

09-10 23:00