Как получить все имена тегов из XML с помощью Jackson в Java

Что вызывает ArrayIndexOutOfBoundsException?

Если вы думаете о переменной как о «поле», где вы можете поместить значение, то массив представляет собой ряд ящиков, расположенных рядом с eachother, где число Ячейки представляют собой конечное и явное целое число.

Создание такого массива:

final int[] myArray = new int[5]

создает строку из 5 полей, каждая из которых имеет int. Каждый из ящиков имеет индекс, позицию в ряду ящиков. Этот индекс начинается с 0 и заканчивается на N-1, где N - размер массива (количество ящиков).

Чтобы извлечь одно из значений из этой серии ящиков, вы можете обратиться к нему через его индекс, например:

myArray[3]

Который даст вам значение 4-го ящика в серии (так как в первом поле есть индекс 0).

ArrayIndexOutOfBoundsException вызвано попыткой извлечь «ящик», который не существует, передав индекс, который выше индекса последнего «поля» или отрицательный.

В моем примере работы эти фрагменты кода приведут к такому исключению:

myArray[5] //tries to retrieve the 6th "box" when there is only 5 myArray[-1] //just makes no sense myArray[1337] //waay to high

Что вызывает ArrayIndexOutOfBoundsException?

Чтобы предотвратить ArrayIndexOutOfBoundsException, есть некоторые клавиши пункты:

Looping

При переходе по массиву всегда убедитесь, что индекс, который вы извлекаете, строго меньше длины массива (количество ящиков). Например:

for (int i = 0; i < myArray.length; i++) {

Обратите внимание на <, никогда не смешивайте там = ..

Возможно, вам захочется сделать что-то вроде этого:

for (int i = 1; i <= myArray.length; i++) { final int someint = myArray[i - 1]

Просто нет.

Где это возможно, используйте foreach:

for (int value : myArray) {

Таким образом, вы можете использовать этот параметр, если вы хотите использовать индекс. вообще не придется вообще обдумывать индексы.

При циклизации, что бы вы ни делали, НИКОГДА не изменяйте значение итератора цикла (здесь: i). Единственное место, которое должно изменить значение, это сохранить цикл.

Looping

При извлечении произвольного элемента массива всегда проверяйте, есть ли у вас какие-либо исключения, и в большинстве случаев это не обязательно. что он является допустимым индексом по отношению к длине массива:

public Integer getArrayElement(final int index) { if (index < 0 || index >= myArray.length) { return null; //although I would much prefer an actual exception being thrown when this happens. } return myArray[index]; }
0
задан Misho Zhghenti 13 July 2018 в 14:18
поделиться