Psy*_*ode 0 java iterator infinite-loop
从我所看到的,如果你有一个iterable并且你在循环中使用iterable.hasNext它将循环遍历数组内的所有元素,但在这里的代码中,它永远不会终止:
//ArrayList<FriendlyBullet> list = . . .;
Iterator<FriendlyBullet> fbi = list.iterator();
while (fbi.hasNext()) { // This loops supposedly infinitely
this.game.list.iterator().next().draw(g2d);
}
Run Code Online (Sandbox Code Playgroud)
我知道列表中没有无限或大量的项目.FriendlyBullet只是我正在使用的一个类.如果我的问题中没有包含对我来说必不可少的内容,请告诉我!我不确定这是我的语法或什么问题,任何帮助非常感谢.
aio*_*obe 12
这个方法调用
this.game.list.iterator()....
Run Code Online (Sandbox Code Playgroud)
在每次循环迭代中创建一个新的迭代器.将fbi.next()永远不会被调用.
您应该重用fbi如下:
//ArrayList<FriendlyBullet> list = . . .;
Iterator<FriendlyBullet> fbi = list.iterator();
while (fbi.hasNext()) { // This loops supposedly infinitely
fbi.next().draw(g2d);
}
Run Code Online (Sandbox Code Playgroud)
请注意,这恰好相当于
for (FriendlyBullet fb : list)
fb.draw(g2d);
Run Code Online (Sandbox Code Playgroud)
或者(如果您使用的是Java 8)
list.forEach(fb -> fb.draw(g2d));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |