迭代器出现问题。它需要迭代ArrayList并找到除此之外的任何其他Object并打印它的名称。程序使用线程。当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()标签中显示:找不到来源?
答案 0 :(得分:7)
每次调用itr.next
时,它都会将迭代器推进到下一个元素。您需要执行以下操作:
while(itr.hasNext()) {
Monster m = itr.next();
// rest of your code using m instead of itr.next()
}