Глиф Учебники

ArrayIndexOutOfBoundsException — выход за границы массива

Справочник · Java · 1 минута чтения

Ошибка значит, что программа обратилась к элементу массива с номером, которого в массиве нет. Индексы массива длины n — от 0 до n - 1; всё остальное, в том числе отрицательные номера, — за границей.

Java
public class Main {
    public static void main(String[] args) {
        int[] a = {10, 20, 30, 40, 50};
        for (int i = 0; i <= a.length; i++) {
            System.out.println(a[i]);
        }
    }
}

Программа выведет пять чисел и упадёт:

Текст
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
    at Main.main(Main.java:5)

Сообщение говорит всё нужное: обращались к индексу 5, а длина массива 5 — последний индекс 4. Строка Main.java:5 — где это случилось.

Исправление

В условии цикла — строго меньше:

Java
for (int i = 0; i < a.length; i++) {
    System.out.println(a[i]);
}

А если индекс не нужен, цикл for-each за границу не выйдет вовсе:

Java
for (int x : a) {
    System.out.println(x);
}

Частые причины

Похожие ошибки

Подводные камни