2011-04-15 53 views
0

我有一個計數器,至少有4個循環。 和一個計數器來計算這些循環已經通過了多少。Java Swing;選擇if語句還是do-while語句?

在我的代碼都標籤setVisibility爲true低於計數1 但我想LABEL1以計數的計數1和label2出現2

我對你的問題是;

什麼是更有效的,設置只有if語句的可見性標籤,或 我可以多次使用do-while語句嗎?書面如果它要麼不執行DO /時,或導致無限循環

class counters2 implements ActionListener 
{ 
    int count = 0, alternativecounter = 0; 
    public void actionPerformed(ActionEvent e) 
    { 
     int fakeSecond = (count++ % 4) + 1; 
     if(fakeSecond == 1) 
     { 
      alternativecounter += 1; 
      if(alternativecounter == 3) 
      { 
       do 
       { 
        label1.setVisible(true); 
       }while(count == 1); 
       do 
       { 
        label2.setVisible(true); 
       }while(count == 2); 
      } 
     } 
    } 
} 
+2

不知道你在做什麼,但是如果'count'等於你的代碼中的一個或兩個,你的do-while循環中的一個將是無限的。 – eaj 2011-04-15 18:54:16

回答

4

A do while指的是 - 即重複執行代碼。你有沒有注意到,如果alternativecounter3,代碼進入無限循環?此外,do while的主體是總是至少執行一次,所以(無限循環放在一邊)這段代碼是不正確的。

如果要嘗試有條件地執行的代碼不應該多次執行(並且在這裏,很明顯它確實不應該),使用if語句。


正如其他人所說,這也是嘗試優化代碼荒謬的方式 - 這是premature optimizationmicro-optimization在那。

+0

好吧,如果你和其他人這麼說,我很抱歉,我很想學習,並真的想知道這件事。感謝您的時間和答案 – Opoe 2011-04-15 19:04:02

2

您的代碼。不要擔心效率問題,並努力使這些代碼具有可讀性和正確性。

+0

好吧謝謝你的回答 – Opoe 2011-04-15 19:04:51

2

事件偵聽器應該只處理單個事件。因此,在事件發生時您檢查變量的狀態,然後執行相關處理。

所以你永遠不會使用do/while。事實上,在你的發佈代碼中,你已經引入了一個無限循環。這個無限循環會反過來凍結GUI,因爲它無法響應其他事件。