문제

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를 리턴 할 때마다메소드를 한 번만 호출하고 결과를 저장하십시오.동일한 객체를 다시 사용하십시오.

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