質問

私は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;
.

TobtenirPriorite()で意味を加えると仮定しています。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top