如何在if-else循环中编写while循环

时间:2020-04-30 13:09:12

标签: javascript if-statement while-loop

请告诉我我的代码有什么问题。似乎在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");
}

1 个答案:

答案 0 :(得分:0)

除了if-else以外,您都可以使用大小写转换

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++
}

您只需像变体中那样将输出添加到控制台即可。