Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 嵌套迭代器_Java_Iterator - Fatal编程技术网

Java 嵌套迭代器

Java 嵌套迭代器,java,iterator,Java,Iterator,我正在尝试构建一个太空入侵者游戏,并开发了这段代码,当其中一个外星人撞到屏幕边缘时,所有外星人都会掉下来,但是当它撞到line敌军de=downwardIterator.next()时,我会收到一条看起来很糟糕的错误消息。游戏仍然按照它应该的方式运行,但是当它到达那条线时,它会在后台发出这些错误消息。 代码如下: Iterator<Enemy> iterator = enemyList.iterator(); while (iterator.hasNext()) {

我正在尝试构建一个太空入侵者游戏,并开发了这段代码,当其中一个外星人撞到屏幕边缘时,所有外星人都会掉下来,但是当它撞到line
敌军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();
}