Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么变量总是输出1,即使它是';s在Javascript中递增_Javascript_Variables_Scope - Fatal编程技术网

为什么变量总是输出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”。很抱歉,我没有注意到该操作符。如果使用“==”则不会出现问题