我不知道为什么我会陷入无限循环

时间:2020-04-02 02:10:14

标签: javascript loops infinite

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

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))

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您的循环从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));