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