ListIteratorをテストしようとしていますが、無限ループに入ります
-
21-12-2019 - |
質問
私はJavaでのプログラミングです。
public ListIterator<T> iterateur() {
ListIterator<T> it = liste.listIterator();
return it;
}
.
そして私はこの方法でそれを使おうとします
public int ObtenirNbElments(int priorite) {
int nbPrio=0;
while(this.iterateur().hasNext()){
if(this.iterateur().next().obtenirPriorite() == priorite){
nbPrio++;
}
}
return nbPrio;
}
.
そのようなテストクラスと一緒に使用するたびに:
listePriorite.ajouter(elt1);
listePriorite.ajouter(elt2);
listePriorite.ajouter(elt3);
listePriorite.ajouter(elt4);
listePriorite.ajouter(eltd1);
assertEquals(2,listePriorite.ObtenirNbElments(1));
.
無限ループに入るように思われるのはなぜですか?
解決
iterateur()
を起動するたびに、新しいListIterator
を作成して返します。メソッドを1回だけ呼び出して結果を保存します。同じオブジェクトを再使用してください。
int nbPrio=0;
ListIterator<T> it = this.iterateur();
while(it.hasNext()){
if(it.next().obtenirPriorite() == priorite){
nbPrio++;
}
}
return nbPrio;
.
(T
がobtenirPriorite()
で意味を加えると仮定しています。)
所属していません StackOverflow