Проверка длины массивов перед установкой значений - PullRequest
0 голосов
/ 30 октября 2018

Я должен установить значения в списке строковых массивов. Как мне написать код, чтобы избежать массива из связанных исключений. например это мой код:

for (int i = 0; i < childs.getLength(); i++)
{
    String[] slotValues = _newValues.get(i);
    if (allSlots) {
        NodeList slots = childs.item(i).getChildNodes();
        for (int j = 0; j < slotValues.length; j++) {
            XmlUtil.setTextContent(slots.item(j), slotValues[j]); 
        }
    } else {
        for (int j = 0; j < slotValues.length; j++) {
            XmlUtil.setTextContent(XmlUtil.getFeature(_slotNames[j], childs.item(i)), slotValues[j]);
        }
    }
}

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

1 Ответ

0 голосов
/ 30 октября 2018

Я новичок и не знаю, как проверить длину значений что я пытаюсь установить в структуре не дает массив из связанное исключение. т.е. он должен быть равен длине массива.

Поскольку коллекции в Java основаны на 0, имея массив arr, первым элементом будет arr[0], а последним будет arr[arr.length-1]. Зная это, вы можете убедиться, что ваша итерационная переменная (индекс массива) всегда >=0 и <array.length.

Наличие index >= arr.length приведет к IndexOutOfBoundsException

Имейте в виду, что в вашем коде вы используете одну итерационную переменную для индексации нескольких массивов, как здесь

XmlUtil.getFeature(_slotNames[j], childs.item(i)), slotValues[j])

Вы используете _slotNames и slotValues ​​с одинаковым индексом, но вы ограничиваете индекс j < slotValues.length, поэтому он зависит от длины slotValues. Если оба массива имеют одинаковую длину, это нормально. Но если это не так, то вы получите упомянутое исключение, если _slotNames будет иметь меньше элементов, чем slotValues.

...