Java 无法迭代列表对象
迭代器有问题。它需要迭代ArrayList并找到除此之外的任何其他对象,然后打印其名称。程序使用线程。当itr.hasNext等于true时,迭代器在进入while循环时如何产生错误 堆栈跟踪: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
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两次。请记住使用调试信息进行编译以获取局部变量。