Ошибка в коде при работе с массивами

1

Hy! Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException? упаковка;

public class Array {

    public static void main(String[] args) {
        int i;
        int[] ar1 = new int[50];
        for(i = 0; i < ar1.length; i++)
        {
            ar1[i] = i * 2 + 1;
            System.out.print(ar1[i] + " ");
        };

        System.out.println();

        for(i = ar1.length; i > -1; i--)
        {
            ar1[i] = i * 2 - 1;
            System.out.print(ar1[i]);
        };

    }

}

После компиляции консоли отображаются:

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99

Исключение в потоке "main" java.lang.ArrayIndexOutOfBoundsException: 50 на учебе.Array.main(Array.java:18)

Мне нужна консоль вывода во второй строке 99 97 95 93...

Заранее спасибо!

Теги:
arrays

2 ответа

3

Вы начинаете с ar1.length во втором цикле, который выходит за пределы.

Чтобы заставить его работать, вам нужно начать с ar1.length-1, который является максимальным индексом для вашего массива. Это связано с тем, что массивы основаны на 0 на Java, как отмечено в комментариях @Maroun Maroun.

  • 0
    Пояснение: потому что массивы в Java основаны на нуле.
  • 0
    Спасибо! Исправил ошибку. Теперь консоль отображает все правильно.
1

Первый раз, когда второй цикл цикла, я = 50 (начальное значение), который находится за пределами конца массива. Это значение используется перед обновлением индекса i--, поэтому ar1 [50] выходит за пределы (соответствующие индексы от 0 до 49 для массива 50 элементов).

  • 0
    Спасибо! Исправил ошибку. Теперь консоль отображает все правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню