我在用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.length
和colLoop <= theGrid[0].length
。它应该是:
rowLoop < theGrid.length
和
colLoop < theGrid[0].length
发生此错误的原因是因为您的索引将达到数组的长度。因此,如果长度为10,则升至索引10。这不是数组的有效索引。数组具有从
0
到length - 1
的有效索引。