我做了一个随机数猜测游戏,你可以在其中确定最大值和最小值。我检查了我的整个代码两次,但似乎无法找到解决方案,为什么它不会工作。我将此脚本链接到解释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 + "!";
}
}
}
编辑:我改变了随机数发生器的工作方式,但我仍然收到错误。要添加更多详细信息,页面会显示无效条目
答案 0 :(得分:0)
两个问题:
prompt
返回的数据类型是字符串,因此如果您没有明确地将其转换为数字,则计算可能会出错。您可以通过应用单一+
运算符来完成此操作,例如+prompt('....');
其次,在 min 和 max 之间获取随机数的方法应该不同。改变这个:
number = Math.floor((Math.random() * max) + min);
为:
number = Math.floor(Math.random() * (max - min + 1) + min);
更正的代码:
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;
答案 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);
上面的代码确保随机数不超过max
和min
之间的差异,当我们添加min
时,我们有随机数在范围之间生成的数字。
这将确保该数字介于max
和min
之间。