【问题标题】:How do I make an if statement for 3 variables?如何为 3 个变量创建 if 语句?
【发布时间】:2016-07-11 04:23:03
【问题描述】:

我的一些代码遇到了一些问题,但我设法找到了问题的根源,并且几乎找到了解决问题的方法。当我将 maximum_guesses 末尾的数字更改为 maximum_guesses1、maximum_guesses2 和 maximum_guesses3 时,代码可以正常工作。但是,当我复制它并更改 maximum_guessses 末尾的数字时,猜测的数量应为三个,而它应该只有一个。

如何使下面的代码适用于所有三个 maximum_guesses?

maximum_guesses1、maximum_guesses2、maximum_guesses3

number_of_guesses++; 
if (number_of_guesses > maximum_guesses3)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

number_of_guesses++; 
if (number_of_guesses > maximum_guesses2)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

number_of_guesses++; 
if (number_of_guesses > maximum_guesses1)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

我需要将以上所有三个都放入一段代码中。 maximum_guesses1 停在 45 次猜测,maximum_guesses2 停在 40 次,maximum_guesses3 停在 35 次,但是当我将它们放在一起时,它们不会停止。

【问题讨论】:

标签: javascript if-statement return


【解决方案1】:

您可能想要做的是将其分离到不同的函数中,您的函数应该具有命名空间来构建您的应用程序。您可以使用 here 找到的帮助程序库来执行此操作。

您可以尝试将代码重构为更结构化的东西,如下所示:

module-controller.js

dali.util.namespace('myCompany.myApp.module');

myCompany.myApp.module.ClassName = function(maxGuesses) {
  this.maxGuesses = maxGuesses;
  this.numberOfGuesses = 0;
  this.alertMessage = 'Sorry, you have run out of guesses!';
};

myCompany.myApp.module.ClassName.prototype.hasMoreGuessesLeft = function() {
  return this.numberOfGuesses < maxGuesses;
};

myCompany.myApp.module.ClassName.prototype.guess = function(guess) {
  this.numberOfGuesses++;

  if(this.hasMoreGuessesLeft()) {
    //do something with the guess?
    console.log(guess);
  } else {
    window.alert(this.alertMessage + ' - ' + this.maxGuesses + ' max.');
  }
};

使用它(导入 module-controller.js):

var maximum_guesses1 = 10;
var instance = new myCompany.myApp.module.ClassName(maximum_guesses1);
var guessAmount = 50;
for (int i = 0; i < guessAmount; i++) {
  instance.guess('Ive guessed ' + i + ' time(s)');
}

然后您可以相应地传入maximum_guesses1maximum_guesses2maximum_guesses3

我希望这会有所帮助。

里斯

【讨论】:

  • 我刚刚尝试了您的建议,它现在使我的每个 maximum_guesses 停止在 34。maximum_guesses1 应该停止在 45,maximum_guesses2 应该停止在 40,maximum_guesses3 应该停止在 35。
  • 我刚刚尝试过,但现在当我按下按钮猜测什么也没发生。还是谢谢
  • 请检查我的代码在做什么,并从您含糊不清的问题中理解,这是我能为您做的最好的事情。我也尝试向您展示一些 OO JS 概念。
  • pastebin.com/m3Pbm41n 这是我目前所拥有的一切。第一部分分为 3 个部分,是一个游戏介绍,每个难度都有单选按钮。第二部分是游戏本身,最后是问题所在的 minefield.js。当我将 maximum_guesses1 更改为 2 或 3 时,它完全按照我想要的方式工作。我唯一遇到的问题是试图将它们放在一起,当我这样做时,它会忽略已选择的任何难度并直接进入 45。简单的是 45 次猜测,中级是 40 次猜测,高级是 35 次猜测。
  • 尝试在代码中使用 console.log(variableName) 并使用 google chrome 开发者控制台帮助调试
【解决方案2】:

你应该使用Logical Operators来解决这个问题。

例如,您的解决方案可能如下所示(如果我理解正确的话):

number_of_guesses++; 
if ( number_of_guesses > maximum_guesses1 ||
     number_of_guesses > maximum_guesses2 ||
     number_of_guesses > maximum_guesses3 ) {
  window.alert("Sorry, you have run out of guesses!");
  return;
}

【讨论】:

  • 我刚刚尝试过这个,但我所有的猜测都变成了 45 次猜测什么时候应该停止。 maximum_guesses1 应该停在 45,maximum_guesses2 应该停在 40,maximum_guesses3 应该停在 35。
  • 你让我想起了我以前见过的东西。
  • 尝试使用&amp;&amp; 而不是||
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2014-04-11
  • 2020-10-29
相关资源
最近更新 更多