簡體   English   中英

為什么 Java 永遠不會到達這個 if/else 的結尾?

[英]Why does Java never reach the end of this if/else?

我已經為此撓頭好幾個小時了,但我似乎無法弄清楚這一點。 我正在編寫一個程序,該程序在線程中具有恆定循環,該程序偶爾使用 Arraylist 將數據發送回程序的另一部分。

我只想在我的 arraylist 中收集 11 個項目后將這些數據發回。 所以我使用了這段代碼:

//The rest of the loop in which i gather the values for key and velocity.

    notenbuffer.add(new Noot(key,velocity));
    if (notenbuffer.size() > 10){
    System.out.println("Notenbuffer > 10, verstuur data");
        
    if (notenbuffer.isEmpty()){
          System.out.println("buffer is empty!");

    }
    else {
          usbRead.writeNotes(notenbuffer);
          System.out.println("emptied the buffer!");
          notenbuffer.clear();
    }
        
    }

現在由於一些奇怪的原因,程序永遠不會清空 Arraylist,而是繼續向其中添加項目。 我已經檢查過了,它實際上確實到達了usbRead.writeNotes(notenbuffer)部分,因為這個 function 被正確調用。 當我使用調試器時,它只是在調用此 function 后跳到循環的開頭。

有沒有一種方法可以在 Arraylist 達到一定大小后清空它?

編輯:我寫了一個邏輯錯誤if (notenbuffer.isEmpty())這將永遠是假的,因為我已經在一個 if 語句中,它要求它是假的。

如果你不小心把你的第二個放在你的第一個里面嗎? (缺少的縮進似乎暗示了這一點)。 在 if (notenbuffer.size() > 10) 塊中包含 if (notenbuffer.isEmpty()) 在邏輯上根本沒有意義。 畢竟,如果您的列表大小> 10,那么列表顯然不是空的。 所以 if (notenbuffer.isEmpty()) 永遠不可能是真的。 – 天哪,蜘蛛 15 分鍾前

這確實是問題所在。 刪除它會暴露一個需要解決的 NoClassDefFoundError。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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