Java 嵌套迭代器
我正在尝试构建一个太空入侵者游戏,并开发了这段代码,当其中一个外星人撞到屏幕边缘时,所有外星人都会掉下来,但是当它撞到lineJava 嵌套迭代器,java,iterator,Java,Iterator,我正在尝试构建一个太空入侵者游戏,并开发了这段代码,当其中一个外星人撞到屏幕边缘时,所有外星人都会掉下来,但是当它撞到line敌军de=downwardIterator.next()时,我会收到一条看起来很糟糕的错误消息。游戏仍然按照它应该的方式运行,但是当它到达那条线时,它会在后台发出这些错误消息。 代码如下: Iterator<Enemy> iterator = enemyList.iterator(); while (iterator.hasNext()) {
敌军de=downwardIterator.next()时,我会收到一条看起来很糟糕的错误消息代码>。游戏仍然按照它应该的方式运行,但是当它到达那条线时,它会在后台发出这些错误消息。
代码如下:
Iterator<Enemy> iterator = enemyList.iterator();
while (iterator.hasNext()) {
Enemy e = iterator.next();
if(e!=null && e.isActive()){
e.move();
e.draw(g);
if(e.edgeHit()){
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) {
Enemy de = downwardIterator.next();
de.dropPosition();
de.changeDirection();
}
}
}
else{
iterator.remove();
}
}
您的第二个迭代器循环不正确
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) {
// ...
您的第二个迭代器循环不正确
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) {
// ...
如果需要解释,则在向下迭代器对象上调用.next()方法,而while循环没有检查右迭代器对象以查看是否还有剩余元素:
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) { // Check downwardIterator instead of iterator
Enemy de = downwardIterator.next();
de.dropPosition();
de.changeDirection();
}
Iterator downwardIterator=enemyList.Iterator();
while(iterator.hasNext()){//检查向下迭代器而不是迭代器
敌方de=向下迭代器.next();
de.dropPosition();
d.改变方向();
}
此外,当满足第一个if条件时,如果未修改enemyList,则可以使用增强的for循环在enemyList上迭代。如果需要解释,请调用.next()方法,而while循环没有检查右迭代器对象以查看是否还有任何元素:
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) { // Check downwardIterator instead of iterator
Enemy de = downwardIterator.next();
de.dropPosition();
de.changeDirection();
}
Iterator downwardIterator=enemyList.Iterator();
while(iterator.hasNext()){//检查向下迭代器而不是迭代器
敌方de=向下迭代器.next();
de.dropPosition();
d.改变方向();
}
此外,当满足第一个if条件时,如果未修改enemyList,则可以使用增强的for循环在enemyList上迭代
Iterator<Enemy> downwardIterator = enemyList.iterator();
while (iterator.hasNext()) { // Check downwardIterator instead of iterator
Enemy de = downwardIterator.next();
de.dropPosition();
de.changeDirection();
}