簡體   English   中英

為什么hasNext()不會為假?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM