【问题标题】:Can a for loop be written to create an infinite loop or is it only while loops that do that?可以编写一个 for 循环来创建一个无限循环,还是只有 while 循环才能做到这一点?
【发布时间】:2011-06-14 17:56:34
【问题描述】:

可以用 Java 编写 for 循环来创建无限循环,还是只有 while 循环会导致该问题?

【问题讨论】:

  • 我是编程新手——我的教科书只在 while 循环的上下文中提到了无限循环。
  • for 循环只是 while 循环的另一种语法。其中一种可能的一切,另一种也可能发生。
  • 任何永远无法满足终止条件的 for 循环将是无限的:for($i = 0; $i > -1; $i++) { ... }

标签: java for-loop


【解决方案1】:
for(;;){}

相同
while(true){}

【讨论】:

  • 这很挑剔(实际上可能是不正确的,无论如何——我是从一个比我高两年级的高中生那里得到的),但我听说for(;;) 被编译了进入无条件的jmp 或其他,而对于while(true),它首先检查true 的计算结果为true
【解决方案2】:

您也可以使用 for 循环来执行此操作。例如。以下与while(true)相同:

for(;;) {
}

【讨论】:

  • 使用for(;;); 来缩短无限循环:-)
【解决方案3】:

除了范围问题和另一件事之外,这是:

for(<init>; <test>; <step>) {
  <body>
}

等同于:

<init>
while(<test>) {
  <body>
  <step>
}

正如其他人所暗示的,就像你可以有一个没有&lt;init&gt; 表单或&lt;step&gt; 表单的while 循环一样,你可以有一个没有它们的for 循环:

while(<test>) {
  <body>
}

相同
for(;<test>;) {
  <body>
} //Although this is terrible style

最后,你可以拥有一个

for(;true;) {
  <body>
}

现在,还记得我说过还有一件事吗?就是for 循环不需要测试——产生其他人发布的解决方案:

for(;;) {
  <body>
}

【讨论】:

  • 你忘记了 for-each 循环——你总是可以写一个永远循环的迭代器 >:-D
【解决方案4】:

当然可以

for(int i = 0; i == i; i++) {}

只要您设法避免退出条件,任何循环都可以无限循环。

【讨论】:

    【解决方案5】:

    不要忘记类似的错误

    for (int i=0; i<30; i++)
    {
        //code
       i--;
    }
    

    这并不像应有的那么罕见。

    【讨论】:

      【解决方案6】:

      只是为了好玩(这对于评论来说太长了):很多人会非常惊讶地发现,出于许多非常实际的目的,以下是几乎 em> 一个无限循环:

          for (long i = Long.MIN_VALUE; i < Long.MAX_VALUE; i++) {
              ...
          }
      

      如果执行此循环的线程每秒可以执行 40 亿次循环,并且可以在一个循环中执行增量和检查(对于单个线程来说非常强大)并且如果我的数学没有完全关闭,我认为上面的代码需要大约 150 年的时间来执行:)

      【讨论】:

        【解决方案7】:

        我就添加这个,因为没有人做过这个版本:

        for(;;);
        

        【讨论】:

          【解决方案8】:

          我让服务器一直运行直到我关闭它的方式是

          for(int i = 0;i&lt;-1;i++){//code here}

          【讨论】:

            【解决方案9】:

            for 循环当然会导致无限循环。一个例子是:

            for(int i = 0; i

            因为i 永远不会递增,所以它将永远留在for 循环的主体中,直到您退出程序。

            【讨论】:

              【解决方案10】:

              还有这个,补完题目:

              do {something();} while(true);
              

              【讨论】:

                【解决方案11】:

                有很多方法可以使 for 循环无限。这是我找到的解决方案:

                int j = 1;
                for (int i = 0; i < j; i++) {
                  //insert code here
                  j++;
                }
                

                这对我来说非常有效,因为它允许循环检查无限数量的值以及无限循环。

                【讨论】:

                  【解决方案12】:

                  您可以将代码的子部分声明为 for 循环中的另一部分,例如 -

                  public class (classname) {
                      for(int i = 1; i <= 4; i++) {
                          for(int j = 1; i <= 4; j++) {
                      system.out.println(i + "*" + j + "=" (i*j));
                  }
                  

                  }

                  它几乎处于无限循环;如果将 int 更改为 long,并添加更多变量,则实际上可以使其持续 25 x 10^12 分钟

                  【讨论】:

                  • 持续更久并不意味着无限循环!
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-03-08
                  • 2021-01-25
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多