首页 > 解决方案 > 如何使用 Javascript 中的 if 语句修复我的 while 循环

问题描述

嘿,我正在使用 javascript 开发一个猜谜游戏项目,该项目需要在提示“给我一个 1 到 10 之间的数字”中输入一个数字。说明应包含以下内容:

while the guess is not equal to the target 提示新的猜测 如果猜测小于目标,则打印“太低!” 否则,如果猜测值大于目标,则打印“太高!” 否则打印“你明白了!”

所以我有我的 while 循环和 if 条件语句,但我不知道如何在我的 while 循环中包含我的 if 语句。我的实际结果只是提示我再次猜测,而不会警报太高!或太低!不过,我在猜测正确数字时的 else 语句似乎有效。谢谢你。

let min = 1;
let max = 10;
let target = Math.random() * (max - min + 1);
target = Math.floor(target) + min;

let guess = (0);

guess = prompt("Give me a number between 1 and 10");
console.log("Your guess is" + guess);


while (guess != target) {
  prompt("Guess again");
  console.log(guess);

}
if (guess < target) {
  alert("too low!");
  console.log("too low guess", guess);

} else if (guess > target) {
  alert("too high!");
  console.log("too high guess", guess);

} else {
  alert("You got it!");
}

标签: javascripthtml

解决方案


您的代码当前正在执行此操作:

  1. 永远:问“再猜一次”
  2. 在“永远”结束后(永远不会!)检查guess. 此外, 的值guess与第一次提出的问题相同。

你会想要这个:

  1. 永远:问“再猜一次”
  2. “再次猜测”后,检查并存储最后一个答案的存储值。
  3. 如果答案正确,则停止永远运行的循环。

但同样重要的是:确保prompt返回一个数字,因为可以在文本提示中输入任何内容。

所以那将是:

// See Note 1.
guess = parseInt(prompt("Give me a number between 1 and 10"), 10);
console.log("Your guess is" + guess);

// 1. Do something forever
while (guess != target){
    // 2. store the last answer
    guess = parseInt(prompt("Guess again"), 10);
    console.log(guess);
    
    // 2b. check the last answer
    if (guess < target){
        alert("too low!");
        console.log("too low guess", guess);
    }else if (guess > target){
        alert("too high!");
        console.log("too high guess", guess);
    }
    // 3. If the answer is correct, `guess === target` so the loop will end.
}

// See Note 2.
alert("You got it!");

注1:如果玩家输入的东西不能转成整数,parseInt(, 10)会返回NaN(不是数字)。你可以测试一下:isNaN(123)/ isNaN(NaN)

注意 2:如果玩家一次正确地得到它,你的应用程序将不会显示消息,因为“你得到它”在循环内。如果第一次答案是正确的,则永远不会进入循环。将消息放在循环之外以解决该问题。


推荐阅读