ArrayList java.lang.ArrayIndexOutOfBoundsException: длина = 10; индекс=10

Я ошеломлен этой ошибкой.

java.lang.ArrayIndexOutOfBoundsException: length=10; index=10

Ниже приведен код, вызывающий исключение. «ключи» — это ArrayList.

    for (int i = 0; i < keys.size(); i++) {
        if (values[i] != null) {
            contentValues.put(keys.get(i), String.valueOf(values[i]));
        }
    }

Что может быть причиной этого outOfBoundsException?


person Jordan Taylor    schedule 25.09.2014    source источник
comment
В какой строке эта ошибка?   -  person Daniel Kaplan    schedule 25.09.2014
comment
Вы не проверяете доступ к values.   -  person rgettman    schedule 25.09.2014
comment
Ваш массив значений имеет длину 10 элементов, начиная с 0 и заканчивая 9. Похоже, что keys состоит из одиннадцати элементов, поэтому вы получите i == 10. Где вы определяете ключи?   -  person thegrinner    schedule 25.09.2014


Ответы (2)


ошибка довольно понятна. Индекс, к которому вы пытаетесь получить доступ, не существует. Java использует индексацию с нулевым индексом. Это означает, что если у вас есть что-то размером 10, его индексы равны 0-9.

В вашем цикле for вы никогда не проверяете, может ли values[i] подняться до 10; Что, видимо, не может.

Судя по всему, values[] имеет размер 10, а keys больше.

person qbit    schedule 25.09.2014
comment
Спасибо. Не могу поверить, что я этого не заметил. - person Jordan Taylor; 25.09.2014

Я предполагаю, что ошибка в операторе if. Откуда вы знаете, что values[i] существует? Вы не повторяете values, вы повторяете keys.

Но вы не дали нам достаточно информации, чтобы знать наверняка. На какой строке это происходит?

person Daniel Kaplan    schedule 25.09.2014