Java 无法迭代列表对象

Java 无法迭代列表对象,java,eclipse,oop,Java,Eclipse,Oop,迭代器有问题。它需要迭代ArrayList并找到除此之外的任何其他对象,然后打印其名称。程序使用线程。当itr.hasNext等于true时,迭代器在进入while循环时如何产生错误 堆栈跟踪: Thread [JOE] (Suspended (exception NoSuchElementException)) ArrayList$Itr.next() line: not available [local variables unavailable] Monster.be

迭代器有问题。它需要迭代ArrayList并找到除此之外的任何其他对象,然后打印其名称。程序使用线程。当itr.hasNext等于true时,迭代器在进入while循环时如何产生错误

堆栈跟踪:

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选项卡中显示:找不到源?

每次调用Itr.next时,它都会将迭代器前进到下一个元素。您需要执行以下操作:

while(itr.hasNext()) {
    Monster m = itr.next();
    // rest of your code using m instead of itr.next()
}

基本上,您的问题是在循环中调用itr.next两次。请记住使用调试信息进行编译以获取局部变量。