[英]Why won't hasNext() become false?
據我所知,如果您有一個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);
}
我知道列表中沒有無限或大量的項目。 FriendlyBullet只是我正在使用的一類。 如果我的問題中沒有包含某些對我有所幫助的東西,請告訴我! 我不確定這是我的語法還是什么問題,對您的幫助將不勝感激。
該方法調用
this.game.list.iterator()....
在每個循環迭代中創建一個新的迭代器。 fbi.next()
永遠不會被調用。
您應該按以下方式重用fbi
:
//ArrayList<FriendlyBullet> list = . . .;
Iterator<FriendlyBullet> fbi = list.iterator();
while (fbi.hasNext()) { // This loops supposedly infinitely
fbi.next().draw(g2d);
}
請注意,這恰好等於
for (FriendlyBullet fb : list)
fb.draw(g2d);
或(如果您使用的是Java 8)
list.forEach(fb -> fb.draw(g2d));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.