【问题标题】:My if-else statement is skipping the first condition when it's supposed to be true我的 if-else 语句在应该为真时跳过了第一个条件
【发布时间】:2021-03-24 06:49:15
【问题描述】:

我只是想让你知道我是 JavaScript 的初学者。

对于我的程序,我需要检查用户是否为给定方程输入了“正确”答案(由 function newEquation())。然而,当用户为方程输入一个实际的正确答案时,function checkAnswer() 中的 if-else 语句直接进入 else(导致玩家失去信心)。我觉得它必须与我分配两个变量有关,但我不完全确定,这可能是一个我看不到的不同问题。如果您不理解下面我的代码中的某些内容,请发表评论。提前谢谢你。

//These are the two variables I am concerned about
var randNum1 = randomNumber(1,6);
var randNum2 = randomNumber(1,6);

//This is the function to create an equation with the two variables which is called somewhere else in my program
function newEquation() {
  randNum1 = randomNumber(1,6);
  randNum2 = randomNumber(1,6);
  setText("equation_text", randNum1 + " + " + randNum2);
}

//This is the function where I think the problem is coming from
function checkAnswer() {
  var user_answer = getNumber("answer_input");
  randNum1 = randomNumber(1,6);
  randNum2 = randomNumber(1,6);
  if (user_answer == randNum1 + randNum2) {
    showElement("coinToCollect");
    hideElement("randMonster");
  } else {
    hideElement("heart_one");
    livesValue--;
  }
}

checkAnswer();

【问题讨论】:

    标签: javascript function variables random


    【解决方案1】:

    每次调用随机数函数时,值都会发生变化。所以这些数字在 newEquation() 函数和 checkAnswer() 函数中的值是不同的。因此,即使您可以使用 setText() 并打印(例如)

    4 + 5
    

    但是一旦你进入 checkAnswer() 函数,randNum1 和 randNum1 的值就会更新。因此,它为条件检查提供了一个错误。

    此外,使用 === 而不是 == 也是一种很好的做法,以确保数据类型相等性检查。

    【讨论】:

      【解决方案2】:

      您正在为变量分配新的随机值。

      checkAnswer 应该是

      
      function checkAnswer() {
        var user_answer = getNumber("answer_input");
        if (user_answer == randNum1 + randNum2) {
          showElement("coinToCollect");
          hideElement("randMonster");
        } else {
          hideElement("heart_one");
          livesValue--;
        }
      }
      
      
      

      【讨论】:

        猜你喜欢
        • 2015-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 2017-08-25
        • 1970-01-01
        相关资源
        最近更新 更多