我尝试解决在线发现的问题。我已经成功解决了这个问题,但是有一个我无法解决的小错误。
问题
编写一个猜测游戏,用户必须猜测一个秘密号码。 每次猜测之后,程序都会告诉用户其号码是否为 太大或太小。最后,需要尝试的次数 被打印。
这是我的代码:
// Generate a random number between 1 and 100
var num = Math.floor(Math.random() * (100)) + 1;
var running = true;
while(running) {
var tries = 1;
var input = prompt("Take a guess");
if (input == num) {
console.log("Correct!");
console.log("Number of tries: " + tries);
running = false;
}else if (input > num) {
console.log("Too big");
}else if (input < num) {
console.log("Too small");
}
tries++;
}
错误
即使用户尝试了1次以上,程序仍会说,
尝试次数:1
请解释我在做什么错。
谢谢。
答案 0 :(得分:3)
您在while循环的每次迭代中重新初始化<span class="headerText">
<a class="headerText" href="http://example.com">
my link
</a>
</span>
:
tires
尝试在循环外进行初始化。
while(running) {
var tries = 1;
...
}
答案 1 :(得分:0)
您的变量tries
会在while
主体内进行缩放。因此,在任何循环迭代中,此变量都将获得值1。要解决此问题,应在循环外部声明并初始化变量:
// Generate a random number between 1 and 100
var num = Math.floor(Math.random() * 100) + 1;
var running = true;
var tries = 1;
while (running) {
var input = prompt("Take a guess");
if (input == num) {
console.log("Correct!");
console.log("Number of tries: " + tries);
running = false;
} else if (input > num) {
console.log("Too big");
} else if (input < num) {
console.log("Too small");
}
tries++;
}
注意:请勿使用console.log()
,而应使用alert()
。控制台用于调试,而不用于通知用户消息。
答案 2 :(得分:0)
我可以看到你的问题。如果将变量放在while函数中,则每次都会将其重置,这意味着每次将为1。
如果将其放在外面,则可以正常运行。另外,我相信promt返回的是字符串而不是数字,这就是为什么我建议您将数字转换为字符串或将promt转换为数字的原因。
这是工作代码:
var num = Math.floor(Math.random() * (100)) + 1;
var running = true;
var tries = 1;
while(running) {
var input = parseFloat(prompt("Take a guess"));
if (input == num) {
console.log("Correct!");
console.log("Number of tries: " + tries);
running = false;
}else if (input > num) {
console.log("Too big");
}else if (input < num) {
console.log("Too small");
}
tries++;
}