Зацикливание элементов в массиве назад

Здесь мой код:

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.