0

イテレータに問題があります。ArrayList を反復処理し、これ以外のオブジェクトを見つけて、その名前を出力する必要があります。プログラムはスレッドを使用します。イテレータが等しいwhileときにループに入ったときにどのようにエラーを生成できますか?itr.hasNext()true

スタックトレース:

Thread [JOE] (Suspended (exception NoSuchElementException)) 
    ArrayList$Itr.next() line: not available [local variables unavailable]  
    Monster.beginFight(Monster) line: 55    
    Monster.run() line: 28  

方法

private void tryName(Monster monster){

    Iterator<Monster> itr = room.monsters.iterator();

    while(itr.hasNext()){

        if (!itr.next().equals(monster)) {
            System.out.println(monster.getName() + "some text "
                    + itr.next().getName());

            break;
        }

}


}

ArrayList$Itr.next()タブに「ソースが見つかりません」と表示されるのはなぜですか?

4

1 に答える 1

7

呼び出すたびitr.nextに、イテレータが次の要素に進みます。次のようなことをする必要があります:

while(itr.hasNext()) {
    Monster m = itr.next();
    // rest of your code using m instead of itr.next()
}
于 2012-05-03T21:36:21.927 に答える