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:
Vielen Dank für eure Antworten.
Schöne sonnige Grüße
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