【问题标题】:java for loop with "true" as the stop condition?java for 以“true”作为停止条件的循环?
【发布时间】:2018-12-05 22:37:24
【问题描述】:

我有一个需要实现的程序,其中包含以下代码:

for (int n = 1024; true; n+=n)

我找不到任何其他具有这种格式的 java 循环示例。这是什么意思?我试图研究它,但我什至不知道要搜索什么 - 它对我来说完全陌生。

【问题讨论】:

  • 这意味着循环将永远运行(给出或接受break 语句)。
  • 有道理,但听起来很鲁莽!
  • [耸耸肩]如果这是你需要它做的事情,那就不是鲁莽了。
  • 有时,可能有必要让循环永远持续下去,直到发生某些事情,这不能写成条件,所以循环使用break或return退出/跨度>
  • 因为for 循环中的条件是可选的并且默认为true,所以您通常不会看到明确的true;你会看到for (int n = 1024; ; n+=n)。

标签: java for-loop


【解决方案1】:

基本的for语句is described in the language spec:

for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

你问的是Expression 是true 的情况。 (上面的方括号表示它是可选的)。

其含义如下所述,Sec 14.14.1.2:

  • 如果 Expression 不存在,或者它存在并且其评估(包括任何可能的拆箱)产生的值为 true,则执行包含的 Statement .

...

  • 如果存在 Expression 并且其评估(包括任何可能的拆箱)产生的值是 false,则不会采取进一步的行动,并且 for 语句会正常完成。

所以,Expression 存在,计算结果为 true(因为 true 计算结果为 true)。因此,Statement 被执行,并将继续执行,因为Expression 仍然是true。

因此,它是一个无限循环(除非循环内有 break、return、throw 或 System.exit)。

【讨论】:

    【解决方案2】:

    为什么你不使用另一个循环?例如使用 do-while 代替

    for (int n = 1024; true; n+=n)
    

    您可以解决以下问题:

    int n=1024;
    do{ 
    //your code
    n+=n;
    }while(condition==false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2019-10-17
      • 2023-03-30
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多