这个随机数猜测游戏有什么问题?

时间:2016-05-07 20:25:13

标签: javascript html random

我做了一个随机数猜测游戏,你可以在其中确定最大值和最小值。我检查了我的整个代码两次,但似乎无法找到解决方案,为什么它不会工作。我将此脚本链接到解释document.getElementById("randNum").innerHTML部分的HTML文件。 我还想说我对编码很新,所以我可能会忽略一些简单的事情。无论如何,这是我的代码。

var max = prompt("Max guessing number?");

if (max <= 2) {
  document.getElementById("randNum").innerHTML = "Invalid entry";
} else {

  var min = prompt("What's the smallest number you can guess?");
  if (min >= (max - 1) || min <= 0) {
    document.getElementById("randNum").innerHTML = "Invalid entry";

  } else {

    number = Math.floor(Math.random() * (max - min + 1) + min);

    guess = prompt("What's your guess?");

    if (guess > max || guess < min) {

      document.getElementById("randNum").innerHTML = "Invalid entry";

    } else if (guess == number) {

      document.getElementById("randNum").innerHTML = "Good job! You guessed the number!";

    } else {

      document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!";

    }
  }
}
编辑:我改变了随机数发生器的工作方式,但我仍然收到错误。要添加更多详细信息,页面会显示无效条目

2 个答案:

答案 0 :(得分:0)

两个问题:

prompt返回的数据类型是字符串,因此如果您没有明确地将其转换为数字,则计算可能会出错。您可以通过应用单一+运算符来完成此操作,例如+prompt('....');

其次,在 min max 之间获取随机数的方法应该不同。改变这个:

number = Math.floor((Math.random() * max) + min);

为:

number = Math.floor(Math.random() * (max - min + 1) + min);

更正的代码:

&#13;
&#13;
var max = +prompt("Max guessing number?");

if (max <= 2) {
  document.getElementById("randNum").innerHTML = "Invalid entry";
} else {

  var min = +prompt("Wat is het kleinste nummer dat je kan raden?");
  if (min >= (max - 1) || min <= 0) {
    document.getElementById("randNum").innerHTML = "Invalid entry";

  } else {

    number = Math.floor(Math.random() * (max - min + 1)) + min;
    console.log(min, max, number, (max - min + 1));

    guess = +prompt("What's your guess?");

    if (guess > max || guess < min) {

      document.getElementById("randNum").innerHTML = "Invalid entry";

    } else if (guess == number) {

      document.getElementById("randNum").innerHTML = "Good job! You guessed the number!";

    } else {

      document.getElementById("randNum").innerHTML = "Wrong! The answer was " + number + "!";

    }
  }
}    
&#13;
<div id="randNum" ></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

对我来说这似乎是错误的:

number = Math.floor((Math.random() * max) + min);

因此,您告诉随机数生成器生成一个最大为max的数字,并添加min值。比如说,如果我给出两个数字:

15, 18

如果Math.random() * max等于17,则它变为:

17 + 15 = 32

您可能需要这样做:

number = Math.floor(Math.random() * (max - min + 1) + min);

上面的代码确保随机数不超过maxmin之间的差异,当我们添加min时,我们有随机数在范围之间生成的数字。

这将确保该数字介于maxmin之间。