0

我有一个在循环中计数为 4 的计数器,还有一个计数器可以计算这些循环中有多少已通过。

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

我对你的问题是:

什么更有效,仅使用 if 语句设置标签可见性,或者我可以多次使用 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);
            }
        }
    }
}
4

3 回答 3

4

Ado while用于循环- 即重复执行代码。您是否注意到,如果alternativecounter3,代码进入了一个无限循环?此外, a 的主体do while总是至少执行一次,所以(除了无限循环)这段代码是不正确的。

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


正如其他人所说,这也是尝试优化代码的一种荒谬方式 - 这是过早的优化微优化

于 2011-04-15T18:55:02.343 回答
2

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

于 2011-04-15T18:54:03.520 回答
2

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

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

于 2011-04-15T18:54:18.630 回答