我尝试在JavaScript中创建一个愚蠢的小游戏,您可以提示您猜测1-10之间的数字。然后计算机随机选择一个数字,如果它与您猜到的相同,那就是#34;你猜对了!",否则"再试一次!"。
但是,计算机输入和用户输入绝对不一样! 我做错了什么?
var userChoice = prompt("Make a guess from 1 to 10");
var computerChoice = Math.random();
if (computerChoice < 0.1) {
computerChoice = 1;
}
else if (computerChoice < 0.2){
computerChoice = 2;
}
else if (computerChoice < 0.3){
computerChoice = 3;
}
else if (computerChoice < 0.4){
computerChoice = 4;
}
else if (computerChoice < 0.5){
computerChoice = 5;
}
else if (computerChoice < 0.6){
computerChoice = 6;
}
else if (computerChoice < 0.7){
computerChoice = 7;
}
else if (computerChoice < 0.8){
computerChoice = 8;
}
else if (computerChoice < 0.9){
computerChoice = 9;
}
else {
computerChoice = 10;
}
var compare = function(choice1, choice2){
if (choice1 === choice2){
console.log("You guessed right!");
}
else{
console.log("Try again!");
}
};
compare(userChoice, computerChoice);
答案 0 :(得分:2)
您在userChoice
函数中使用computerChoice
将字符串(===
)与数字compare
进行比较。这将始终返回false
。请改用==
,因为它会在比较之前将用户输入强制转换为数字。
答案 1 :(得分:0)
首先,欢迎来到StackOverflow,我祝你在编程冒险中一切顺利! JavaScript prompt
方法返回一个字符串,您将其与计算机的数字输入进行比较。您应该通过parseInt()
将字符串输入转换为数字。
var userChoice = parseInt(prompt("Make a guess from 1 to 10"));
您可以通过额外的错误处理来改进程序,并且计算机的数字选择可能更有效,但这应该可以帮助您入门。
答案 2 :(得分:0)
如果您的变量computerChoice
是一个数字(Math.random返回一个数字),您可能需要在函数之前将userChoice
变量转换为数字比较值。
为此,您可以使用 parseInt()
功能:
compare(parseInt(userChoice), computerChoice);
使用严格相等运算符===
,您将需要值和类型相同。
函数prompt()
总是返回一个字符串。
一些链接:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
答案 3 :(得分:0)
function id(sel) {return document.getElementById(sel); }
var $usrINP = id("usrINP"),
$playBTN = id("playBTN"),
$resDIV = id("resDIV");
function compare(){
var userNum = parseInt( $usrINP.value, 10 ),
compNum = Math.ceil( Math.random() * 10 ),
result = "YOU:"+userNum+" COMPUTER:"+compNum+"<br>";
if(!userNum || userNum > 10) return alert("Enter a valid Number from 1-10");
result += userNum===compNum ? "YOU WON!" : "WRONG!";
$resDIV.innerHTML = result;
}
$playBTN.addEventListener("click", compare, false);
&#13;
<input id=usrINP type=text maxlength=2>
<input id=playBTN type=button value=Play>
<div id=resDIV></div>
&#13;
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator
https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML
在您的示例中(&#34;字符串&#34; )&#34; 2&#34;,使用===
严格平等,永远不会匹配2
(数字),因此请使用==
(宽松等式)或parseInt
您的输入值。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
Which equals operator (== vs ===) should be used in JavaScript comparisons?