如何在if-else循环中写一个while循环?

问题描述 投票:0回答:1

请告诉我我的代码有什么问题。好像是在 continue; 即使我使用最大的数字作为输入,它仍然会在同一个块上循环。这里它仍然希望我输入一个更大的数字。

// 1) Generate a random integer from 0 to 10 (reference: Math.random())
const RanNum = Math.floor(Math.random() * Math.floor(11))
console.log(RanNum)

// 2) Ask the user input (reference: prompt())

let userInput = prompt(`Give me a  number`)
const userInputInt = parseInt(userInput)
console.log(userInput) 
console.log(typeof(userInput))
console.log(userInputInt)
console.log(typeof(userInputInt))


if(isNaN(userInput)){
    prompt(`Give me a freaking number`)
}else{
    let x = 0;
    while (x < 4) {
        console.log('hi')
        console.log(userInputInt)
        console.log(RanNum)

        if (userInputInt == RanNum) {
            console.log(`win`)
            prompt('YOU GOT IT MAN')
            break;
        }
        else if (userInputInt < RanNum) {
            x = x+1 ;
            prompt('Larger please')
            continue;

        }
        else if (userInputInt > RanNum) {
            x= x+1
            prompt('Smaller please')
            continue;

        }

    }
    if(x > 3){alert('More than 3 times')}

}

但是,这个可以正常工作。谁能给我指点一下,到底是哪里出了问题?

// Guess the number

const randomNumber = Math.floor(Math.random() * 11);

let trials = 0;

while(trials < 4){
    const guess= parseInt(prompt("Give me a number(0-10)!"));
    if(isNaN(guess)){
        alert("You are not inputing a number");
        // Works for while-loop, for-loop, do-while loop
        continue;
    }
    trials++;
    if(guess === randomNumber){
        // Equal
        alert("You win!!");
        // If the player wins, terminate the game
        // Works for while-loop, for-loop, do-while loop
        break;
    }else{
        // Unequal
        if(guess > randomNumber){
            alert("Too large!");
        }else{
            alert("Too small");
        }
    }
}

if(trials > 3){
    alert("You loses");
}
javascript if-statement while-loop
1个回答
0
投票

除了if-else,你可以使用switch-case。

let i = 0,
solution = Math.floor(Math.random() * Math.floor(11)),
max_tries = 3;
while (nmb !== solution && i < max_tries + 1) {
  if (i < max_tries) {
    var nmb = Number(prompt("Put number  (1 - 10): "));
    switch(true) {
      case nmb > solution : console.log("Smaller please"); break;
      case nmb < solution : console.log("Largest please"); break;
      default             : console.log("YOU GOT IT MAN");
    }  

  }
else { console.log("You lose! Number was: " + solution) }
i++
}

你只需要像你的变体一样在控制台添加输出。

© www.soinside.com 2019 - 2024. All rights reserved.