Java Swing;在if语句或do-while语句之间选择?

时间:2011-04-15 18:49:56

标签: java swing if-statement while-loop do-while

我有一个计数器在循环中计数到4。 并且计数器计算这些循环中有多少已经通过。

在下面的代码中,两个标签在计数1时将setVisibility标记为true。 但我希望label1出现在count 1,而label2出现在count 2。

我的问题是;

更有效的是,只用if语句设置标签visibilty,或者 我可以多次使用do-while语句吗?

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);
            }
        }
    }
}

3 个答案:

答案 0 :(得分:4)

do while适用于循环 - 即重复执行代码。您是否注意到,如果alternativecounter3,代码会进入无限循环?此外,do while的正文总是至少执行一次,所以(无限循环)此代码不正确。

如果要尝试有条件执行的循环代码不应该执行多次(在这里,很明显它确实不应该执行),使用if语句。< /强>


正如其他人所说,这也是一种尝试优化代码的荒谬方式 - 它是premature optimizationmicro-optimization

答案 1 :(得分:2)

您编写的代码要么不执行do / while,要么导致无限循环。不要担心效率,并努力使这些代码可读和正确。

答案 2 :(得分:2)

事件侦听器应该只处理单个事件。因此,在事件发生时,您检查变量的状态,然后进行相关处理。

所以你永远不会使用do / while。事实上,在您发布的代码中,您引入了无限循环。这个无限循环将反过来冻结GUI,因为它无法响应其他事件。