【发布时间】:2012-05-03 21:35:03
【问题描述】:
迭代器有问题。它需要遍历 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() 选项卡中显示:Source not found?
【问题讨论】:
-
基本上,您的问题是在循环中调用
itr.next()两次。 -
记得用调试信息编译获取局部变量。