2016-05-07 65 views
0

我做了一个随机数猜测游戏,你可以在其中确定最大值和最小值。我检查了我的整个代码两次,但似乎无法找到解决方案,为什么它不起作用。我将这个脚本链接到解释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

您是否在浏览器控制台中看到错误? – Andy

回答

0

两个问题:

通过prompt返回的数据类型为字符串,因此计算可能出问题,如果你不明确地将其转换为数字。您可以通过将单一+运营商这样做,像+prompt('....');

其次,要获得分钟最大之间的随机数应该是不同的方式。更改此:

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 + "!"; 
 

 
    } 
 
    } 
 
}
<div id="randNum" ></div>

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之间。