#java #arrays
#java #массивы
Вопрос:
Вот мой код
class GameOfLife {
public static void main(String[] args) {
int height = 0;
int width = 0;
int [][][] universe = new int [2][20][20];
for (height=0; height <= 5; height ){
for (width=0; width <= 5; width ){
universe [2][height][width]= 0;
}
}
System.out.print(universe[2][2][3]);
}
}
Исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 2
при тестировании.GameOfLife.main(gameOfLife.java: 10)
Комментарии:
1. Используете ли вы Eclipse IDE для отладки вашего кода? Я настоятельно рекомендую это.
2. Массивы индексируются с НУЛЯ, а не с ЕДИНИЦЫ.
Ответ №1:
Когда вы определяете юниверс
int [][][] universe = new int [2][20][20];
Он имеет два пятна, индекс 0 и индекс 1. Вероятно, вам следует сделать
int depth;
for (depth=0; depth < universe.length; depth ) {
for (height=0; height < universe[depth].length; height ){
for (width=0; width < universe[depth][height].length; width ){
universe [depth][height][width]= 0;
}
}
}
Ответ №2:
Ваш массив universe
: первый индекс должен быть 0
или 1
.
Когда вы определяете один массив, индекс начинается с нуля:
Смотрите также:
Ответ №3:
Максимальный индекс массива с размером 2
1
int [][][] universe = new int [2][20][20]
^
таким образом, System.out.print(universe[2][2][3]);
выбрасывается ArrayIndexOutOfBoundException
Ответ №4:
Если вы хотите получить доступ к юниверсу [2] [][] , вы должны определить это с помощью
int [][][] universe = new int[3][20][20];
указатели начинаются с ‘0’.