2012-04-03 13 views
0

Ich habe einen einfachen Code, wo ich eine Liste durchlaufen und in XML schreiben muss.
Aber Problem ist, dass manchmal meine Tags überschreitet und Werte sind weniger als Tags, also möchte ich dort ein "-" oder etwas ähnliches schreiben.
Aber ich habe Probleme dabei. Hier ist, was ich versuche zu tun.Kein solches Element im Iterator

Wenn Iterator nichts hat, gibt es mir keine solche Element-Ausnahme.
Ich muss iter1.next() innerhalb for Schleife aufrufen, weil für eine Iteration der for-Schleife ich mehrere Werte durch Iterator habe.
Wie Sie sagen können, habe ich 60 Element in for Schleife und für diese 60 Element habe ich nur 56 Werte diese Werte bekomme ich von Iterator. Jemand sagt mir eine gute Datenstruktur dafür? Was soll ich machen?

+0

Was sind die Tags und was ist in iter1, sollen sie passende Liste gleicher Größe sein? Wenn ja, möchten Sie vielleicht eine Karte oder eine Liste von Tupeln/Paaren verwenden (aber Java enthält keine, so dass Sie einige finden oder schreiben müssen) –

+0

Ein Beispiel für das, was Sie versuchen zu erreichen, kann helfen. Ohne mehr zu wissen, würde ich sagen, dass Sie eine bessere Datenstruktur benötigen (vielleicht eine Sammlung von Value-Element-Paaren oder ähnlichem), bevor Sie anfangen, darüber zu iterieren. –

+0

Danke an alle, auch ich habe nicht die richtige Antwort bekommen, aber ich habe meinen Code selbst erstellt. –

Antwort

1

Sie führen die iter1.next() mehrmals (weil es in der for-Schleife ist) für jeden 'hasNext()' Anruf Sie tun. Um dies zu beheben, müssen Sie die iter1.next() über die For-Schleife verschieben.

+0

Ich weiß das, aber was ist die Lösung wie bekomme ich was ich will –

+0

Hey ich habe so etwas Bedürfnis, dass ich iter1.next in for loop setzen muss. –

0

Das Problem ist, dass Sie iter1.next() für jedes Objekt in der Tagsammlung aufrufen. Dies führt dazu, dass der Iterator beendet wird, bevor Sie es erwarten.

Setzen Sie String value = iter1.next(); außerhalb der Schleife von "Tags".

1

Sie iter1.next(); in der for each Schleife für tags anrufen, daher kann es mehrfach aufgerufen werden, während Sie iter1.hasNext() nur einmal aufgerufen!

Vielleicht möchten Sie Ihre Variable außerhalb der for each Schleife erklären:

while(iter1.hasNext()){ 
    String value = iter1.next(); //Call to "next()" here! 
    for (Object elementKey : tags) { 
     String element = (String) elementKey; 
     // ... 
    } 
} 
0

Sie als nächstes tun() in einer Schleife, so dass Sie versuchen, die next mehrere Male nach der Überprüfung zu holen, wenn es 1 Tagesordnung für sicher.

Vielleicht sollten Sie eine String-Instanz vor Ihrer Schleife erstellen und dann verwenden?

while(iter1.hasNext()){ 
      String next = iter1.next() 
      for (Object elementKey : tags) { 
       String value = next; 
       ... 
Verwandte Themen