Я не могу понять, почему я получаю бесконечный цикл - PullRequest
0 голосов
/ 02 апреля 2020

Я нахожусь в процессе изучения этого языка, и мой учитель попросил меня написать код. Проверил все остальные посты об этом и не смог найти ответ, и я просто не понимаю, почему я получаю бесконечное l oop, так как условие кажется ясным (мне, по крайней мере, ха-ха): 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))

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Вы хотите запросить у пользователя num2 несколько раз, следовательно, его prompt должно быть в l oop.

0 голосов
/ 02 апреля 2020

Ваш l oop начинается с num1. В нем также говорится, что он будет продолжать цикл до тех пор, пока num2 !== num1 Но в конце строки 6 вы просто вводите num2, что никак не влияет на num1. Таким образом, до тех пор, пока num1 ранее не было равно num2, оно всегда будет не равно num2 и, таким образом, l oop будет бесконечным.

Вы можете объявить num2 как ноль вне l oop, затем сделайте подсказку внутри l oop. Таким образом, когда num2 равно num1, num2 !== num1 возвращает false, и l oop прекращает цикл после этой итерации. В противном случае он будет продолжать цикл и запрашивать снова и снова ... пока пользователь не введет тот же номер, что и num1, затем он прекратит цикл после текущей итерации.

Кроме того, возьмите строки 8-13 в исходный код из l oop, чтобы он не повторялся при повторном запросе кода.

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