为什么变量总是输出1,即使它是';s在Javascript中递增
我试图解决我在网上发现的一个问题。我成功地解决了这个问题,但有一个小错误我无法解决 问题 编写一个猜测游戏,让用户猜一个秘密号码。 每次猜测后,程序都会告诉用户他们的号码是否正确 太大或太小。最后,所需的尝试次数应为 被打印出来 这是我的密码:为什么变量总是输出1,即使它是';s在Javascript中递增,javascript,variables,scope,Javascript,Variables,Scope,我试图解决我在网上发现的一个问题。我成功地解决了这个问题,但有一个小错误我无法解决 问题 编写一个猜测游戏,让用户猜一个秘密号码。 每次猜测后,程序都会告诉用户他们的号码是否正确 太大或太小。最后,所需的尝试次数应为 被打印出来 这是我的密码: // Generate a random number between 1 and 100 var num = Math.floor(Math.random() * (100)) + 1; var running = true; while(r
// 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和100之间的随机数
var num=Math.floor(Math.random()*(100))+1;
var running=true;
(跑步时){
var=1;
风险值输入=提示(“猜测”);
如果(输入==num){
console.log(“正确!”);
log(“尝试次数:+尝试次数”);
运行=错误;
}else if(输入>数值){
console.log(“太大”);
}else if(输入
错误
即使用户尝试了不止一次,程序仍然会说
尝试次数:1
请解释我做错了什么
谢谢。您可以在while循环的每次迭代中重新初始化
轮胎
:
while(running) {
var tries = 1;
...
}
尝试在循环之外初始化
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++;
}
var num=Math.floor(Math.random()*(100))+1;
var running=true;
var=1;
(跑步时){
风险值输入=提示(“猜测”);
如果(输入==num){
console.log(“正确!”);
log(“尝试次数:+尝试次数”);
运行=错误;
}else if(输入>数值){
console.log(“太大”);
}else if(输入
您的变量在主体中尝试贴花。所以,任何循环迭代,这个变量都会得到值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++;
}
//生成一个介于1和100之间的随机数
var num=Math.floor(Math.random()*100)+1;
var running=true;
var=1;
(跑步时){
风险值输入=提示(“猜测”);
如果(输入==num){
console.log(“正确!”);
log(“尝试次数:+尝试次数”);
运行=错误;
}else if(输入>数值){
console.log(“太大”);
}else if(输入
注意:不要使用console.log()
,而是使用alert()
。控制台用于调试,而不是通知用户消息。我可以看到您的问题。如果在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++;
}
var num=Math.floor(Math.random()*(100))+1;
var running=true;
var=1;
(跑步时){
var input=parseFloat(提示(“猜测”);
如果(输入==num){
console.log(“正确!”);
log(“尝试次数:+尝试次数”);
运行=错误;
}else if(输入>数值){
console.log(“太大”);
}else if(输入
哦,我没看到!谢谢,谢谢你的回答!但是,它在没有转换的情况下工作。不这样做是一种不好的做法吗?不是,但有时在某些浏览器中,它会导致错误,因为它将数字显示为字符串。如果你不这样做,那也没关系,但在发布之前,我会检查不同的浏览器和这些brosersOk的不同版本,我想我也不能将“===”操作符用作“input==num”。很抱歉,我没有注意到该操作符。如果使用“==”则不会出现问题