如何在我的变量等于用户输入之前保持循环?的JavaScript

时间:2017-05-10 19:42:57

标签: javascript loops math logic

这个嵌套直到i和j目前都是3。如何在变量上限后重置变量,以便继续循环?

或者这不是正确的思考过程吗?

for (i=1; i<=3; i=i+1)
  {
   for (j=1; j<=3; j=j+1)
     {
      ans=i + j;
      document.write(i + "+" + j + "=" + "<br />");
      var user_input = prompt("What is your answer?",0);
      while (user_input != ans) {
      if (ans == user_input)
        {
         document.write("Yes, the answer is " + ans + "<br />");
        }
      else
        {
         document.write("No, the answer is " + ans + "<br />");
        } 
      }
    }  
  }

我尝试了一个while循环,但它一直在崩溃。我对这个问题的逻辑只是有点不确定。

我正在尝试做什么:

如果用户在任何时候正确回答,则循环结束。但是我不希望数学加上6。一旦它达到6,我最好喜欢它重置为i和j。

2 个答案:

答案 0 :(得分:1)

我认为你不需要while循环。假设用户回答错误,他们会得到新问题,如果他们回答正确,整个过程就会停止,请尝试这个

var finish = false;
for (i=1; i<=3; i=i+1)
  {
   for (j=1; j<=3; j=j+1)
     {
      ans=i + j;
      console.log(i + "+" + j + "=" + "<br />");
      var user_input = prompt("What is your answer?",0);
      if (ans == user_input)
        {
            finish = true;
            console.log("Yes, the answer is " + ans + "<br />");
          break;
        }
      else
        {
            console.log("No, the answer is " + ans + "<br />");
        }
    }  
    if(finish){break;}
    if(i==3 && j==4){i =0; j=0}
  }

答案 1 :(得分:0)

我会使用递归函数来执行此操作。使用嵌套循环只是可怕,难以阅读,更容易进入无限循环条件:

var ans = 6;
function getInput() {
    var user_input = prompt("What is your answer?",0);
    if (ans == user_input) {
        document.write("Yes, the answer is " + ans + "<br />");
    }
    else {
        getInput();
    } 
}

getInput();

如果你想在每次循环时改变ans,你可以添加随机数逻辑来设置答案:

var ans = Math.floor(Math.random() * 6) + 1;