На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Ошибка ArrayIndexOutOfBoundsException Java

ArrayIndexOutOfBoundsException – это исключение, появляющееся во время выполнения. Оно возникает тогда, когда мы пытаемся обратиться к элементу массива по отрицательному или превышающему размер массива индексу. Давайте посмотрим на примеры, когда получается ArrayIndexOutOfBoundsException в программе на Java.



Попробуйте выполнить такой код:

    static int number=11;
    public static String[][] transactions=new String[8][number];
    public static void deposit(double amount){
        transactions[4][number]="deposit";
        number++;
    }

    public static void main(String[] args) {
        deposit(11);
    }
}
Вы увидите ошибку:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
	at sample.Main.deposit(Main.java:22)
	at sample.Main.main(Main.java:27)
Exception running application sample.Main

Process finished with exit code 1
Что здесь произошло? Ошибка в строке 27 – мы вызвали метод deposit(), а в нем уже, в строке 22 – попытались внести в поле массива значение "deposit". Почему выкинуло исключение? Дело в том, что мы инициализировали массив размера 11 (number = 11), н опопытались обратиться к 12-му элементу. Нумерация элементов массива начинается с нуля. Так что здесь надо сделать, например, так

public static String[][] transactions=new String[8][100];
Но вообще, это плохой код, так писать не надо. Давайте рассмотрим еще один пример возникновения ошибки ArrayIndexOutOfBoundsException:

public static void main(String[] args) {
    Random random = new Random();
    int [] arr = new int[10];
    for (int i = 0; i <= arr.length; i++) {
       arr[i] =  random.nextInt(100);
       System.out.println(arr[i]);
    }
}
Здесь массив заполняется случайными значениями. При выполнении IntelliJ IDEA выдаст ошибку

Caused by: java.lang.ArrayIndexOutOfBoundsException: 10
	at sample.Main.main(Main.java:37)
В строке 37 мы заносим значение в массив. Ошибка возникла помтому, что индекса 10 нет в массиве arr, поэтому условие цикла i <= arr.length надо поменять на i < arr.length

Конструкция try для ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException можно обработать с помощью конструкции try-catch. Для этого оберните try то место, где происходит обращение к элементу массива по индексу, например, заносится значение. Как-то так:

try {
    array[index] = "что-то";
}
catch (ArrayIndexOutOfBoundsException ae){
    System.out.println(ae);
}
Но я бы рекомендовал вам все же не допускать данной ошибки, писать код таким образом, чтобы не пришлось ловить исключение ArrayIndexOutOfBoundsException.






тегизаметки, ArrayIndexOutOfBoundsException, java, ошибки, исключения





Переводим WP на https: личный опыт
Делаю программы на заказ


© upread.ru 2013-2018
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос или оставить комментарий. Оставьте сообщение, и я отвечу на него в ближайшее время. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru