我试图编写一些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!");
}
答案 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;
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!");
}
}

答案 1 :(得分:1)
将你的提示放在某种循环中。循环内部的代码将反复运行,直到比较为false
。
基本示例:
var a = 500,
b;
while (parseInt(b) !== a) {
b = prompt('Enter a number!');
if (b === null) break;
}
while
循环答案 2 :(得分:0)
通过调用相同的函数来递归执行此操作
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();

答案 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!=' 5' 将返回false,但 5!==' 5' 返回真正。建议您的比较无需转换。它更严格。
在您的情况下,这意味着:
while(parseInt(b) !== a)
问候!