Next()-Aufruf zweimal innerhalb einer While-Schleife bei ListIterator

LILA

Aktives Mitglied
Hallo Forum,

ich habe generelle Verständnisfragen:

Ist es erlaubt die next-Methode zweimal innerhalb einer While-Schleife aufzurufen?
Und wenn nein, wieso nicht?

Desweiteren würde mich interessieren, ob es möglich ist, einen Iterator wie ich es gemacht habe in der Methode 'checkNumberOfFollowingLayers(iterator)' zu übergeben? Um später wieder auf das selbe Element zuzugreifen, gehe ich mit dem Iterator anschließend mit previous wieder zurück...

Bei mir macht der Iterator nicht das was ich erwarte. D.h. er gibt teilweise Elemente zweimal zurück etc. Kann das sein, dass es daran liegt, dass man mit einem Iterator nicht wie folgt umgehen darf?

Beispiel:
Java:
ListIterator<Tree> iterator = treeArray.listIterator();
while (iterator.hasNext()) {
    //*****Erster Aufruf next()
    Tree tree = iterator.next();
    level = tree.getLevel();
    isLayer = tree.getLayerId();
    //Some code here
    if (level == 3 && isLayer != 0){
        //*****Methodenaufruf und Übergabe des Iterators
        int number = checkNumberOfFollowingLayers(iterator);
        for (int i = 0; i <= number; i++) {
            //Some code here
            //*****Zweiter Aufruf next()
            tree = iterator.next();
        }
//Some code here
private int checkNumberOfFollowingLayers(ListIterator<Tree> iterator) {
    int number = 0;
    int isLayer;
    //*****Innerhalb der Methode wird sowohl iterator.next().........
    while (iterator.hasNext()) {
        Tree tree = iterator.next();
        isLayer = tree.getLayerId();
	if (isLayer != 0) {
	    number = number + 1;
	} else {
	    break;
	}
    }
    //*****.......... als auch iterator.previous() genutzt
    for (int i = 0; i <= number; i++) {
        iterator.previous();
    }
    return number;
}

Vielen Dank für eure Antworten.
Schöne sonnige Grüße
 
S

SlaterB

Gast
eine while-Schleife ist kein feste Code-Erlaubnis-Struktur sondern nur eine Anordnung von Befehlen,

wenn du dir im wahren Leben die 'Verhaltens-Schleife' 'eine Steckdose mit dem Spannungsprüfer testen, dann jeweils zwei sorglos aufschrauben' zurechtlegst, verbietet dir das niemand, aber du solltest dich nicht wundern wenn du einen Schlag bekommst

hier wohl genauso, hasNext() prüft nur für den ersten next()-Aufruf, die weiteren machst du ohne Netz und doppelten Boden
 
H

hüteüberhüte

Gast
Also eigentlich prüfst du ja vorher mit .hasNext, ob .next noch etwas zurück gibt oder nicht. Wenn du sicherstellen kannst, dass so und so viele Elemente vorhanden sind, brauchst du natürlich nicht prüfen, aber ansonsten ist das eher unsicher
 

LILA

Aktives Mitglied
Erstmal vielen Dank euch, für eure ganzen Antworten!
Nun ist mir klar, dass ich einfach immer abfragen muss, ob noch wirklich weitere Elemente in dem Iterator vorhanden sind.

Bei folgendem Code gibt es allerdings noch ein Problem:

Ich habe folgende Inhalte in meiner Array-List:
- Name - Level
- UmweltA - 1
- UmweltB - 2
- UmweltC - 3

Code:
Java:
		ListIterator<Tree> iterator = treeArray.listIterator();
		while (iterator.hasNext()) {

			tree = iterator.next();
			level = tree.getLevel();
			isLayer = tree.getLayerId();

			if (level == 1) {
                              //do Something
			}
			
			if (level == 2 && isLayer == 0) {
                              //do Something
			}
			
			if (level == 3 && isLayer == 0){
                              //do Something
			      Tree topLevelFolder = findTopLevelFolder(2, iterator);
			}

private Tree findTopLevelFolder(int level, ListIterator<Tree> iterator) {


		int number = 0;

		while (iterator.hasPrevious()) {
			tree = iterator.previous();
			treeLevel = tree.getLevel();

			number = number + 1;
			if (treeLevel == level) {

		}
		for (int i = 0; i < number; i++) {
			iterator.next();
		}

Ich durchlaufe meine Liste und springe in für das erste Element in die erste If-Schleife, bei dem zweiten Element springe ich in die zweite If-Schleife. Bei dem dritten Element springe ich in die dritte If-Schleife und dort rufe ich meine private Methode findTopLevelFolder auf...

Dieser Methode übergebe ich meinen Iterator. Und in Zeile 27 bei tree = iterator.previous wird laut Debugger nur der cusor des Iterators eins nach unten gezählt. Der zugewiesene Tree bleibt derselbe. Erst wenn ich ein zweites Mal iterator.previous aufrufe, wird das niedrigere Element in den Tree geschrieben...
Hat hier jemand eine Idee, warum das so ist und ob das normal ist?
 
S

SlaterB

Gast
if-schleife.de ist nicht normal,

das Iterator-Verhalten allerdings schon, also so implementiert, stören würde mich das wohl auch, bin da noch nie vorbeitgekommen
E previous()

Returns the previous element in the list. This method may be called repeatedly to iterate through the list backwards, or intermixed with calls to next to go back and forth. (Note that alternating calls to next and previous will return the same element repeatedly.)
ListIterator (Java Platform SE 6)
 

LILA

Aktives Mitglied
Hallo SlaterB,

dann ist das also tatsächlich normal so, danke!

Ok, dann in Zunkft if-Abfrage :)

Dann werde ich mal weiter wurschtln...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D next() Methode mehrfach verwenden Java Basics - Anfänger-Themen 1
G while.next() Verständnisfrage Java Basics - Anfänger-Themen 16
M Liste Implementation, doppelt next() Java Basics - Anfänger-Themen 13
B OOP next cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
gstarplayer [Verständnisprobleme] Java next(),nextLine,nextInt und parseInt! Java Basics - Anfänger-Themen 22
S Iterator next() Nullpointer Java Basics - Anfänger-Themen 2
G Erklärung .next Java Basics - Anfänger-Themen 4
C Methoden Verkettete listen - next methode Java Basics - Anfänger-Themen 3
M Frage zu ResultSet.next() Java Basics - Anfänger-Themen 7
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
A next in einer Schleife Java Basics - Anfänger-Themen 2
K next() und getFirst() Methode in LinkedList Java Basics - Anfänger-Themen 6
K 2 x "Next" im Plugin Java Basics - Anfänger-Themen 7
M previous und next einbauen Java Basics - Anfänger-Themen 53
D On Error Resume Next Java Basics - Anfänger-Themen 16
Q Iterator next erstellen Java Basics - Anfänger-Themen 4
G String mit next()-Methode einlesen - keine Leerzeichen! Java Basics - Anfänger-Themen 11
J int temp = (int) it.next(); -> inconvertible types? Waru Java Basics - Anfänger-Themen 3
S Wie arbeitet iter.next() Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
Agent4nobody Programmstart durch aufruf des interpreters funktioniert nicht Java Basics - Anfänger-Themen 14
G Main Methode wird beim ersten Aufruf nicht richtig ausgeführt Java Basics - Anfänger-Themen 1
K Erste Schritte Stream-Aufruf vereinfachen Java Basics - Anfänger-Themen 3
sashady ursprüngliche Array-Werte bei erneutem Aufruf? Java Basics - Anfänger-Themen 7
M Aufruf von statischen Methoden einer anderen Klasse Java Basics - Anfänger-Themen 15
Y Aufruf von Methode nicht möglich. Java Basics - Anfänger-Themen 2
D Aufruf von mehreren Activities bringt die app zum Absturz Java Basics - Anfänger-Themen 5
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
X Methode bei mehrfachen Aufruf kein Effekt Java Basics - Anfänger-Themen 3
H Aufruf von Methoden durch Methoden Java Basics - Anfänger-Themen 3
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Konsolenscanner startet nicht durch Aufruf von Actionlistener Java Basics - Anfänger-Themen 4
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
R Methoden NPE beim Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 4
J Aufruf einer Methode über einen String Java Basics - Anfänger-Themen 11
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
H Rekursiver Aufruf Java Basics - Anfänger-Themen 8
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
Henri Aufruf von getX() und getY() aus der Super klasse Objekt() Java Basics - Anfänger-Themen 3
E Aufruf auf Objekt mit übergebenem Wert? Java Basics - Anfänger-Themen 7
D Aufruf einer statischen Variable Java Basics - Anfänger-Themen 1
D Aufruf einer Methode einer anderen Klasse Java Basics - Anfänger-Themen 39
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
P Aufruf Methode anderer Klasse Java Basics - Anfänger-Themen 5
J Klassen Reihenfolge beim Aufruf von Klassen Java Basics - Anfänger-Themen 1
V Problem Aufruf einer Methode in einer Methode Java Basics - Anfänger-Themen 1
O Frage zum Aufruf überladener Methoden Java Basics - Anfänger-Themen 4
G funktions Aufruf aus GUI Java Basics - Anfänger-Themen 9
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
I Rückgabe und Aufruf einer Methode innerhalb einer anderen Methode Java Basics - Anfänger-Themen 5
W Zeitversetzter Aufruf der Methoden Java Basics - Anfänger-Themen 6
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
F signiertes Applet fkt. nicht bei lokalem Aufruf Java Basics - Anfänger-Themen 2
A externer repaint Aufruf Java Basics - Anfänger-Themen 9
H Aufruf einer Instanzmethode funktionert nicht. Java Basics - Anfänger-Themen 6
A Konstruktor Aufruf Java Basics - Anfänger-Themen 4
Pentalon Ein Aufruf den ich nicht verstehe Java Basics - Anfänger-Themen 11
D dynamischer Aufruf Java Basics - Anfänger-Themen 2
N Aufruf der Methode Java Basics - Anfänger-Themen 16
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
A Aufruf der paint() Methode Java Basics - Anfänger-Themen 3
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
P URL für Lokalen Aufruf Java Basics - Anfänger-Themen 5
C OOP Aufruf von Methoden höherer Sichtbarkeit Java Basics - Anfänger-Themen 10
T Client-Fenster bei Aufruf unvollständig Java Basics - Anfänger-Themen 12
S Überladener Konstruktor und aufruf aus eigener Klasse Java Basics - Anfänger-Themen 2
A Aufruf von Konstruktor aus Basisklasse Java Basics - Anfänger-Themen 7
O OOP super aufruf 2 objekte? Java Basics - Anfänger-Themen 3
D Array Methoden Aufruf. Java Basics - Anfänger-Themen 14
L Klassen Aufruf einer ueberschreibbaren Methode im Konstruktor Java Basics - Anfänger-Themen 4
M OOP Aufruf vieler Getter Methoden abkürzen? Java Basics - Anfänger-Themen 7
Q Aufruf einer Klasse in einem Package Java Basics - Anfänger-Themen 7
C Aufruf funktioniert nicht Java Basics - Anfänger-Themen 10
T Aufruf einer Methoden aus einer Util-Klasse mit privatem Konstruktor Java Basics - Anfänger-Themen 7
G Aufruf externer Funktionen Java Basics - Anfänger-Themen 7
C Exception beim Aufruf einer Methode Java Basics - Anfänger-Themen 2
A Aufruf einer Methode Java Basics - Anfänger-Themen 3
J Aufruf von Funktionen in *.jar mittels Eclipse Java Basics - Anfänger-Themen 4
T Shell Script Aufruf mit Java Java Basics - Anfänger-Themen 7
R Aufruf statische Methode Java Basics - Anfänger-Themen 7
M Aufruf zum Objekt erstellen aus String Java Basics - Anfänger-Themen 5
K OOP Nachteil bei direktem Aufruf von run() auf Thread-Objekten Java Basics - Anfänger-Themen 2
J Aufruf der Methode Java Basics - Anfänger-Themen 6
P OOP Aufruf eines Interfaces Java Basics - Anfänger-Themen 4
E Konstruktor-Aufruf Java Basics - Anfänger-Themen 9
C Aufruf einer Funktion Java Basics - Anfänger-Themen 3
W Multiplikation mit rekursivem Aufruf Java Basics - Anfänger-Themen 17
C exec Aufruf mit Leerzeilen im Pfad Java Basics - Anfänger-Themen 3
L Methoden aufruf Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben