【问题标题】:How do I stop an infinite loop from occurring while getting user input?如何在获取用户输入时停止发生无限循环?
【发布时间】:2020-01-14 13:50:55
【问题描述】:

我是一个新手,正在编写一个程序,该程序会继续向用户询问一个数字,直到输入的数字小于或等于 100。我一直以无限循环结束,我不确定如何添加结束循环的正确条件。

let num;

while (!(num === 100 && num < 99)) {     // infinite loop
    num = Number(prompt("Enter a number: "));
    console.log(num);
}

当用户输入小于或等于 100 的数字时,我想退出循环。

【问题讨论】:

  • 一个数怎么等于100小于99?
  • 由于您是新手,因此一个很好的建议是避免while 循环。始终在循环体中进行测试,该测试将作为退出循环的后门。在这种情况下,您可以为用户提供有限的输入数字的机会,如果他们在该次数之后没有输入有效值,则循环退出。为此,您将设置一个计数器变量并在循环体的末尾将其递增。但是,在循环体的开头,您将检查计数器是否已达到其限制。如果是这样,break 退出循环。
  • “小于等于100”你要!(num &lt;= 100)
  • @ScottMarcus 谢谢!我将使用 for 循环再试一次。

标签: javascript while-loop infinite-loop


【解决方案1】:

let num = 101;
    
while (num > 100) {
   num = Number(prompt("Enter a number: "));
   console.log(num);
}

或使用 Do/While:

let num;
    
do {
   num = Number(prompt("Enter a number: "));
   console.log(num);
} while (num > 100);

【讨论】:

    【解决方案2】:

    let num;
    
    while (true) {
        num = Number(prompt("Enter a number: "));
        if (num <= 100) {
        	break;
        }
    }

    【讨论】:

    • 请不要创建 Fiddles 或第 3 方解决方案。链接会随着时间的推移而消失,并使它们无法访问。可执行代码可以在 Stack Overflow 中创建。此外,您的答案甚至不包括指向小提琴的链接。
    • 下次会处理的。
    • @ScottMarcus 感谢您将其更改为代码 sn-p
    【解决方案3】:

    要解决此问题,请使用

    !(num === 100 || num < 100)  or
    !(num <= 100)
    

    问题: Num 不可能既等于 100 又小于 99 ,所以它总是假的,所以当条件总是真时

    let num; 
    while (!(num <= 100)) { //or !(num === 100 || num < 100)
      num = Number(prompt("Enter a number: ")); 
      console.log(num); 
    }

    【讨论】:

      猜你喜欢
      • 2021-11-27
      • 1970-01-01
      • 2022-08-24
      • 2018-10-19
      • 2019-02-01
      • 2016-12-23
      • 1970-01-01
      • 2019-11-17
      • 2021-07-02
      相关资源
      最近更新 更多