Нет такого элемента в итераторе - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть простой код, в котором мне нужно перебрать список и написать его в XML.
Но проблема в том, что иногда мои теги превышают, а значения меньше, чем теги, поэтому я хочу написать там "-" или что-то в этом роде.
Но при этом я сталкиваюсь с проблемой. Вот что я пытаюсь сделать.

while(iter1.hasNext()){
            for (Object elementKey  : tags) {
Here is the problem---->String value = iter1.next();
                        String element = (String) elementKey;
                        if(value!=null){
                        out.write("<"+element+">"+value+"</"+element+">");
                        }
                        else
                            out.write("<"+element+">"+"-"+"</"+element+">");

                        }

                    }

Когда у Iterator ничего нет, он не дает мне такого исключения для элемента.
Я должен вызвать iter1.next () внутри цикла for, потому что для одной итерации цикла for у меня есть несколько значений с помощью итератора.
Как вы можете сказать, у меня есть 60 элементов для цикла for, а для этих 60 элементов у меня есть только 56 значения эти значения я получаю от итератора. Кто-нибудь скажет мне хорошую структуру данных для этого? Что мне делать?

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Вы вызываете iter1.next(); в цикле for each для tags, поэтому он может вызываться несколько раз, в то время как вы вызывали iter1.hasNext() только один раз!

Возможно, вы захотите объявить вашу переменную снаружицикл for each:

while(iter1.hasNext()){
    String value = iter1.next(); //Call to "next()" here!
    for (Object elementKey  : tags) {
        String element = (String) elementKey;
        // ...
    }
}
1 голос
/ 03 апреля 2012

Вы выполняете iter1.next() несколько раз (потому что он находится в цикле for) для каждого вызова 'hasNext()', который вы делаете. Чтобы это исправить, вам нужно переместить iter1.next() по размеру цикла for.

0 голосов
/ 03 апреля 2012

Вы выполняете next () в цикле, поэтому вы пытаетесь получить next несколько раз после проверки, точно ли есть 1 следующий элемент.

Может быть, вам следует создать экземпляр String перед циклом, а затем использовать это?

while(iter1.hasNext()){
          String next = iter1.next()
            for (Object elementKey  : tags) {
              String value = next;
              ...
0 голосов
/ 03 апреля 2012

Проблема в том, что вы вызываете iter1.next() для каждого объекта в коллекции тегов.Это приведет к завершению итератора до того, как вы ожидаете.

Поместите String value = iter1.next(); вне цикла тегов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...