【问题标题】:Why this loop is endless为什么这个循环是无止境的
【发布时间】:2014-10-04 22:31:38
【问题描述】:

我是编程新手。

我正在做作业,我有一个关于这段代码的问题:

do {
    int i=4;      
} while (true);

为什么这个循环是无限的?

【问题讨论】:

  • 为什么true 是真的?
  • true 总是计算为true
  • 因为它没有结束条件。
  • int i=4... 整数?这是来自 javascript 的示例吗?

标签: java infinite-loop do-while


【解决方案1】:

这是编程中最基本的东西之一 - while 循环。只要条件为真,while 循环就会继续执行。因此,由于代码中的条件是true,它将永远运行,因为没有其他东西可以停止循环。

希望这能帮助你理解它:

var condition = true;
var i = 5;
do{
  i--; // decrement the value of i
  console.log('i is now', i);
  if (i == 0)
      condition = false;    
} while (condition);

console.log('loop ended');

在这里查看:http://jsfiddle.net/9cr0yqp6/

【讨论】:

  • 哇,一票否决,迫不及待地想听到 AAAALL 的消息……考虑到其他答案,我的答案绝对是最糟糕的。但这很酷,我的评论获得了 5 票。
  • 这不是真的,while(true){ ... } 并不意味着循环将永远运行。你可以有一个退出条件,比如break
  • @SpencerWieczorek 你是认真的吗?
  • @gab06 你最喜欢哪一部分? :)
  • @gab06 我不能,StackOverflow 不会让我! ;) 哈,现在是 +2 了:D
【解决方案2】:

你还没有退出方法。你永远不会将循环设置为 false。

【讨论】:

    【解决方案3】:

    这是一个无限循环,因为您没有退出循环的条件。

    True 将始终为 true,因此循环将继续执行,直到您的条件为 false(这不可能发生)。

    这个循环 while 无限地创建一个名为 i 的局部变量,然后将值 4 赋给它。

    【讨论】:

      【解决方案4】:

      这是 Java,不是 JavaScript。

      当条件保持为真时,循环继续循环。

      结束的循环示例和解释原因:

      for(var i = 0; i < 5; i++) {
          //do something
      }
      

      每次迭代 i 增加 1(由于 i++),一旦条件(为 i &lt; 5)不再为真,循环就会中断并结束。

      在您的循环中,true 将始终为 true。

      【讨论】:

      • 也可以是C、C++ :P
      • 鉴于这是家庭作业,而且他可能是一名学生,我会赌 Java,但你是绝对正确的。他标记了 JavaScript,这让我相信他指的是 Java(因为这不是 JS)。
      【解决方案5】:

      或许为了解释为什么循环是无限的,我们来看一个结束的:

      var i = 4;
      do{
        i = i + 1;
      } while (i < 6);
      

      此循环将在将 i 变为 5 和 6 时进行迭代,这将使 while 语句中的条件为 false,从而结束循环。

      如果您改为使用while (true),则条件永远不会为假,并且循环永远不会结束。

      【讨论】:

        【解决方案6】:

        “while”循环是无限的,因为您将条件设置为 true。

        【讨论】:

          猜你喜欢
          • 2021-09-20
          • 2014-04-17
          • 2013-11-12
          • 1970-01-01
          • 2015-01-10
          • 2021-08-16
          • 2018-01-13
          相关资源
          最近更新 更多