我在使用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';
}
}
}
}
答案 0 :(得分:5)
问题是rowLoop <= theGrid.length
和colLoop <= theGrid[0].length
。它应该是:
rowLoop < theGrid.length
和
colLoop < theGrid[0].length
错误的原因是因为您的索引达到了数组的长度。因此,如果长度为10,则上升到索引10.这不是数组的有效索引。数组具有从0
到length - 1
的有效索引。