我的Android应用程序遇到了一些麻烦。我有一个while循环,它应该循环遍历迭代器中的每个对象并渲染它们。问题是while循环不会渲染所有对象;它渲染的数量少于我指定的数量。例如,如果迭代器中有5个对象,则只渲染4个,迭代器中的最后一个对象是不可见的(但仍然存在)。这是代码。
enemyIterator = enemies.iterator();
while (enemyIterator.hasNext())
{
Enemy zombie = enemyIterator.next();
zombie.update();
batch.draw(zombie.getCurrentFrame(), zombie.getPosition().x,
zombie.getPosition().y);
}
我怀疑它与“hasNext()”方法有关;一旦迭代器循环到最后一个对象,hasNext()方法将返回“false”,因此即使最后一个对象存在,它也不会被渲染。
如果这不是问题,我不确定是什么问题因为我知道我的应用程序只渲染了迭代器中的一个对象。
有人可以帮我找到解决这个问题的方法吗?
提前致谢
答案 0 :(得分:0)
你已经知道了 - 最后一个对象没有“下一个”所以它不会进入循环内部。
您可以更改它,或者我建议使用a代替每个循环。
for(Enemy enemy: enemies){
//do your update inside
}
每个人的更多内容:
http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html
How does the Java 'for each' loop work?
我认为每个循环都非常可靠,并没有那么多使用。在您的情况下,它可能是一个更好的选择。