【问题标题】:Java Swing; choose between if statement or do-while statement?爪哇摇摆;在 if 语句或 do-while 语句之间进行选择?
【发布时间】:2011-08-06 13:38:31
【问题描述】:

我有一个在循环中计数为 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);
            }
        }
    }
}

【问题讨论】:

  • 不确定您要做什么,但如果 count 在您的代码中等于一或二,则您的 do-while 循环之一将是无限的。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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


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

      【讨论】:

      • 好吧,如果您和其他人这么说,我很抱歉,我很想学习并且真的很想知道这一点。感谢您的时间和回答
      猜你喜欢
      • 2011-07-28
      • 1970-01-01
      • 2015-02-06
      • 2020-05-07
      • 2017-03-08
      • 1970-01-01
      • 2016-01-10
      • 2012-06-19
      • 1970-01-01
      相关资源
      最近更新 更多