【问题标题】:What condition does while(true) test? When is it true and false?while(true) 测试什么条件?什么时候是真假?
【发布时间】:2014-04-26 02:37:21
【问题描述】:

我不明白为什么有人会使用

while(true) {
   //do something
}

而不是

boolean condition = true;
while(condition == true) {
   //do something
}

后者非常容易理解,而前者则不然。

那么,while(true) 检查什么条件? while(true) 什么时候为真,什么时候为假?

【问题讨论】:

  • 老游戏编程101!
  • 我不明白为什么有人会使用while(condition == true) { 而不是while(condition) {
  • 有时循环的退出条件很复杂,例如在服务器中,它需要不断地等待和处理输入,直到收到关闭信号。在这种情况下,有时会使用while (true)(或其同义词for (;;)),并在退出条件最终出现时执行break
  • 这个问题似乎是题外话,因为它是无意义的。

标签: java loops while-loop


【解决方案1】:

while(true) 什么时候为真,什么时候为假?

它永远是真的,它永远不会是假的。

有些人使用while(true) 循环,然后在某个条件为真时使用break 退出它们,但这通常是相当草率的做法,不推荐使用。如果不使用breakreturnSystem.exit() 或其他类似机制,它将永远循环。

【讨论】:

  • 有没有可能是假的?
  • @Gregg1989,请让我明白这一点。您是在问是否有任何方法可以使真为假?
  • @davmac 是的。 while(true) 循环可以返回 false 并且不执行吗?
  • @Gregg1989,while 循环永远不会“返回”任何东西,无论是真还是假。只要条件保持为真,它就会反复检查其条件并执行其主体。只有当条件变为假时,while 循环才会停止执行。在while(true) 循环中,条件为truetrue 绝不是 false,在我所知道的任何宇宙中。先生,如果您是在拖钓,那就玩得很好。
  • '在我所知道的任何宇宙中,true 永远不会是 false' - 可能在使用 perl 时除外。我不确定 perl。
【解决方案2】:

虽然我们永远不知道何时遇到需要它的情况。我们也可以有无限的for循环。

for(;;) {//Code here}

【讨论】:

    【解决方案3】:

    这是一个真实的例子。当用户输入无法解析为 int 时,while 循环将进行迭代。当用户输入被解析为 int 时,循环通过返回用户输入的数字退出。

    private int getNumber(String message) {
        while (true) {  
            System.out.print(message);
            String userInput = scanner.nextLine();
            try {
                return Integer.parseInt(userInput);
            } catch (Exception ignored) {
                System.out.printf("%s isn't a number!%n", userInput);
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      condition == true 也将返回一个布尔值,它是“真”。所以直接使用它而不是所有这些。

      【讨论】:

        【解决方案5】:

        while(true) 循环当然会一直迭代。您必须使用breakSystem.exit()return 手动打破它。

        while(condition == true) 为真,而conditiontrue。您可以通过设置 condition = false 将其设为 false。

        至少我永远不会使用while(condition == true)。相反,只需使用while (condition)。就够了。

        【讨论】:

          【解决方案6】:

          while(true) 始终为真。循环语句一直在执行。如果你必须打破循环,我们必须使用break语句。

          【讨论】:

            【解决方案7】:

            while(true) 用于无限循环。它们将永远循环,因为true 总是true 它们通常用于当你必须做某事直到满足某个条件时。然后使用break 语句退出

            while(true) {
              //attempt to satisfy some condition
            
              if (satisfied) {
                break;
              }
            }
            

            【讨论】:

              【解决方案8】:
              1. 列表项

              当(真): 陈述 如果(条件): 休息 这仅适用于python 在java中你可以这样写来达到同样的目的

              而(1==1) { 句... }

              【讨论】:

              • 问题所在的特定程序语言似乎没有答案。请尝试用 Java 制定一个可能的答案。
              猜你喜欢
              • 1970-01-01
              • 2015-07-25
              • 2017-02-20
              • 1970-01-01
              • 2016-06-11
              • 1970-01-01
              • 1970-01-01
              • 2019-01-30
              相关资源
              最近更新 更多