Зацикливание элементов в массиве назад
Здесь мой код:
int myArray[]={1,2,3,4,5,6,7,8};
for(int counter=myArray.length; counter > 0;counter--){
System.out.println(myArray[counter]);
}
Я хотел бы распечатать массив в порядке убывания, а не в порядке возрастания (от последнего элемента массива до первого), но я просто получил эту ошибку:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 8
at task1.main(task1.java:14)
Почему это происходит? Я надеялся, что, используя myArray.length для установки счетчика на 8, код просто распечатает восьмой элемент массива, а затем сохранит его до этого.
Ответы
Ответ 1
Массивы в Java индексируются от 0
до length - 1
, а не от 1
до length
, поэтому вам следует соответствующим образом назначить свою переменную и использовать правильный оператор сравнения.
Ваш цикл должен выглядеть следующим образом:
for (int counter = myArray.length - 1; counter >= 0; counter--) {
Ответ 2
- Первый индекс равен 0, а последний индекс равен 7 не 8
- Размер массива равен 8
Ответ 3
использовать myArray.length-1
for(int counter=myArray.length-1; counter >= 0;counter--){
System.out.println(myArray[counter]);
}
Ответ 4
Проблема здесь в этом фрагменте кода: myArray.length
. В Java, как и в большинстве других языков, структуры данных основаны на 0, поэтому последний элемент имеет индекс structure.length - 1
(а первый - 0
). Поэтому в вашем случае вы должны изменить свой цикл следующим образом:
for(int counter=myArray.length - 1; counter >= 0;counter--){
System.out.println(myArray[counter]);
}
Ответ 5
Вы начинаете с неправильного индекса. Сделайте это так:
for(int counter= myArray.length - 1; counter >= 0;counter--) {
Последний индекс массива - его длина минус 1.
Ответ 6
счетчик начинается с индекса myArray.length, который фактически подсчитывается от 1 вместо 0..
for(int counter=myArray.length - 1; counter > 0; counter--){
Ответ 7
int myArray[]={1,2,3,4,5,6,7,8};
Здесь заданная длина массива равна 8, поскольку счет начинается с 1, но для индекса myArray[0] = 1;
и так далее.... здесь количество индексов начинается с 0.
Итак, в вашем фрагменте кода
for(int counter = myArray.length - 1; counter >= 0; counter--) {
выходит из границы массива, поэтому он показывает вам ArrayIndexOutOfBoundsException
.