如何要求用户猜测1到1000之间的数字

时间:2015-05-20 00:30:31

标签: javascript

我试图编写一些javascript代码,要求用户猜测1到1000之间的数字并将其输入到提示框中。如果用户猜对了,会弹出一个警告框,说明他们做对了。如果他们猜错了,会弹出另一个警告框,说他们错了,再试一次。

这里的问题是,我不知道我必须做什么才能让代码无限循环,直到他们得到正确的答案。这是我到目前为止所拥有的:

var a = 489; // the number that needs to be guessed to win the game.

//var b stores whatever value the user enters.
var b = prompt("Enter a number in between 1 and 1000");

// if/else statement that test if the variables are equal.
if (b == a) {
    alert("You're right!");
} else {
    alert("Incorrect! Try again!");
}

4 个答案:

答案 0 :(得分:5)

数字匹配

基本上,当您创建prompt时,它会返回 String 或文本,而不是数字。要解决此问题,请执行以下操作:

if (parseInt(b,10) === a) {
    //Code
}

其他方式

他们有很多解析数字的方法。还有以下几点:

parseFloat(b); // Also parses decimals: '5.3' -> 5.3
parseInt(b, 10); // Gives an integer (base 10): '5.3' -> 5
+b; // A very 'short' way; '5.4' -> 5.4
Number('5.4e2'); // Number case: '5.4e2' -> 540

循环

现在重复一下?把它变成一个循环!

var a = 432;

while (true) {

   var b = prompt("Enter a number in between 1 and 1000");

   if (b == a){
        alert("You're right!");
        break; // Stops loop
    } else if (!b) { break; } 
    else {
        alert("Incorrect! Try again!");
    }
}

不确定原因,但有些人讨厌while true循环。只要您正确编码,它们就不会引起任何问题

<小时/>

随机数

您可以使用Math.random获取随机数。

var min = 1,
    max = 1000;
Math.floor(Math.random() * (max - min + 1)) + min;

如果您喜欢我并想要短代码,可以通过以下方式缩短代码:

Math.floor(Math.random() * (999)) + 1;

All Together Now!

&#13;
&#13;
var a = Math.floor(Math.random() * (999)) + 1;

while (true) {

  var b = prompt("Enter a number in between 1 and 1000");

  if (b == a) {
    alert("You're right!");
    break; // Stops loop
  } else if (!b) {
    alert("The Correct Answer was: " + a); //Shows correct answer
    break;
  } else {
    alert("Incorrect! Try again!");
  }
}
&#13;
&#13;
&#13;

答案 1 :(得分:1)

将你的提示放在某种循环中。循环内部的代码将反复运行,直到比较为false

基本示例:

http://jsfiddle.net/s2he1twj/

var a = 500,
    b;

while (parseInt(b) !== a) {
  b = prompt('Enter a number!');
  if (b === null) break;
}

答案 2 :(得分:0)

通过调用相同的函数来递归执行此操作

&#13;
&#13;
var a = 489;

function promptGuess(){
    //var b stores whatever value the user enters.
    var b = prompt("Enter a number in between 1 and 1000");

    // if/else statement that test if the variables are equal.
        if (b == a){
            alert("You're right!");
        } else {
            alert("Incorrect! Try again!");
            promptGuess();
        }
    }
promptGuess();
&#13;
&#13;
&#13;

答案 3 :(得分:0)

使用一段时间直到比赛:

var a = 489; 
var b;

while(b != a) {
  var b = prompt("Enter a number in between 1 and 1000");
  if (b == a) {
    alert("You're right!");
  } else {
    alert("Incorrect! Try again!");
  }
}

还有一件事:虽然 b!= a 评估是正确的,但它容易出错。 != 运算符执行转换类型,而!== 运算符则比较类型和值。

在您的情况下: 5!=&#39; 5&#39; 将返回false,但 5!==&#39; 5&#39; 返回真正。建议您的比较无需转换。它更严格。

在您的情况下,这意味着:

while(parseInt(b) !== a)

问候!