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
를 리턴 할 때마다메소드를 한 번만 호출하고 결과를 저장하십시오.동일한 객체를 다시 사용하십시오.
int nbPrio=0;
ListIterator<T> it = this.iterateur();
while(it.hasNext()){
if(it.next().obtenirPriorite() == priorite){
nbPrio++;
}
}
return nbPrio;
.
(T
가 obtenirPriorite()
로 의미가있는 경계가있는 것으로 가정합니다.)
제휴하지 않습니다 StackOverflow