Не удается присвоить значение в массиве Java 2D - ArrayIndexoutOfBoundSexception
-
24-10-2019 - |
Вопрос
У меня проблемы с присвоением значения моему 2D массиву в Java. Последняя строка кода, 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
.
Не связан с StackOverflow