2011-04-15 55 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,因为它无法响应其他事件。