【问题标题】:I can't figure out why I'm getting infinite loop我不知道为什么我会陷入无限循环
【发布时间】:2020-07-13 22:19:44
【问题描述】:

我正在学习这门语言,我的老师要求我编写一些代码。检查了有关它的所有其他帖子,但找不到答案,我只是不明白为什么我会出现无限循环,因为条件似乎很清楚(至少对我来说哈哈):num1 必须与 num2 不同。该代码应该一直在 num2 中提出问题,直到用户键入与 num1 相同的数字。

var num1 = Number(prompt("Digite um número"))
console.log("Fight!")
arrayFinal = []
var num2 = Number(prompt("Que número o jogador 1 escolheu?"))

for (num1; num2 !== num1; num2) {
    arrayFinal.push(num2)
    console.log("O número chutado foi: ", num2)
    if (num2 > num1) {
        console.log("MISS! O número é menor!")
    } else if (num2 < num1) {
        console.log("MISS! O númenor é maior!")
    }
}
console.log("GAME OVER! O jogador 2 venceu! O número de tentativas foi: " +
    (arrayFinal.lenght + 1))

【问题讨论】:

  • 这里有一个提示:num1num2 会改变吗?
  • 我认为 for 循环中没有终止条件。你没有改变 num2 或 num1
  • 另外,想想 for 循环的不同部分实际上做了什么。第一部分告诉你如何初始化一些变量(通常使用像i = 0这样的赋值);第二部分定义“继续条件”(类似于i &lt; 10);最后一部分定义了循环在每次迭代之后应该做什么(再次使用赋值的东西,比如i+=1,这样“继续条件”可能会从真变为假)。我怀疑第一部分和最后一部分没有按照您的想法进行。
  • 是的,但我也尝试简单地将它们取下,并添加类似“if (num1===num2) break”之类的内容,但它没有改变:(但谢谢:D

标签: javascript loops infinite


【解决方案1】:

您想多次询问用户num2,因此它的prompt 应该在循环中。

【讨论】:

    【解决方案2】:

    您的循环从num1 开始。它还说,只要num2 !== num1,它将继续循环。但是在第 6 行的末尾,您只需简单地输入num2,这对更改 num1 没有任何作用。因此,只要 num1 之前不等于 num2,它就会始终不等于 num2,从而使循环无限。

    您可以在循环外将num2 声明为null,然后在循环内进行提示。这样,当num2 等于num1 时,num2 !== num1 返回false,并且循环将在该迭代后停止循环。否则会不断循环提示,直到用户输入与num1相同的数字,本次循环结束后停止循环。

    另外,将原代码中的第8-13行从循环中取出,这样就不会因为代码反复提示而重复。

    var num1 = Number(prompt("Digite um número"));
    console.log("Fight!");
    arrayFinal = [];
    
    for (num1; num2 !== num1; num2) {
        var num2 = Number(prompt("Que número o jogador 1 escolheu?")); //dont forget 
        semicolon
        arrayFinal.push(num2);
        console.log("O número chutado foi: ", num2);
        if (num2 > num1) {
            console.log("MISS! O número é menor!");
        } else if (num2 < num1) {
            console.log("MISS! O númenor é maior!");
        }
    }
    console.log("GAME OVER! O jogador 2 venceu! O número de tentativas foi: " +
        (arrayFinal.length + 1));
    

    【讨论】:

    • 哇,没想到能得到这么详尽的回答,太感谢了!
    猜你喜欢
    • 2023-03-22
    • 2016-04-08
    • 1970-01-01
    • 2019-12-23
    • 2010-11-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2016-09-09
    相关资源
    最近更新 更多