【问题标题】:if/else statements only logs if, not elseif/else 语句只记录 if,而不记录 else
【发布时间】:2019-05-28 17:36:50
【问题描述】:

我的编码作业遇到了一个问题。 这里是:

  • 编写一个记录“Marco!”的循环当我是偶数时,
  • 马球!”当我很奇怪时。
  • 不要编辑现有代码。
  • 提示 1:使用 if/else 语句
  • 提示 2:谷歌 mod 运算符 (%)

我的尝试

let x=11;
let y=4;
let i=x%y;

  if (i) {
 console.log("Marco!")
 }

  else  {
 console.log("Polo")
 }

当我需要记录马可时,这会记录马可。因此,当我继续尝试解决这个问题时,我想看看专家会如何做。

【问题讨论】:

  • 使用% 2检查一个数字是否是偶数(更准确地说,% 2 === 0
  • “不要修改现有代码”有点令人困惑——因为我们并不真正知道存在哪些部分。

标签: javascript if-statement math modulo


【解决方案1】:

如果您想检查一个数字是偶数还是奇数,请使用模运算符 (%),它返回一个数字除以另一个数字的余数。你应该颠倒你的逻辑:

let x = 11;
let y = 4;
let i = x % y;

if (i % 2) {
  console.log("Polo!");
} else {
  console.log("Marco!");
}

console.log(i); //So you can see if the above works or not

这是如何工作的:

let i = x % y;

它的作用是将x除以y(将11除以4),然后去掉余数——在这种情况下余数是3,所以i = 3

现在,棘手的问题来了。如果你想知道一个数字是否是偶数,你可以使用% 2,这就是我们在if语句中所做的。如果数字是偶数,它将返回0,因为除以二没有余数。这很棘手,但我会尽我所能向您展示:

如果我们有6(我们知道它是偶数),我们通过将它除以2 来测试它是否是偶数,它应该返回0,因为没有余数:

console.log(6 % 2);

这就是我们在第一个 sn-p 中的逻辑的工作方式,只是它使用布尔真值和假值。虚假值是:

false
0
''
""
``
null
undefined
NaN

所以如果i 是偶数,则模将返回0,这意味着第一个if 语句将不会运行,因为i % 2 将返回0,其计算结果为false,因此代码将如果i 是偶数则运行console.log("Marco!"),但如果i 是奇数则运行console.log("Polo!")

进一步阅读:

【讨论】:

    【解决方案2】:

    如果你想“运行一个循环”……你需要运行一个循环! :)

    for (var i = 0; i < 10; i++) {
      // do things!
    }
    

    这些循环既丑陋又可怕!

    但是 - 这实际上只是一些指令的开始 { 和结束 }

    还有一些其他的事情。

    对于(some setupa conditionwhat to do after each loop

    1. setup: 创建一个变量来跟踪它每次通过方向时的轨迹(这通常写成i,但这只是一个约定 - 它用于“迭代器”或“索引”或其他任何东西。它可以是您想要的任何东西。设置也可以更复杂
    2. 条件:只要这个i的东西低于10,再次运行循环
    3. 在每个循环之后:i 加一

    所以 - 循环应该只运行其中的任何代码... 10?次?还是 11?

    for (var counter = 0; counter < 10; counter++) {
      console.log('curerntly...', counter);
    }
    

    现在……里面有什么?

    这就是 % 位的用武之地。这是经典的“嘶嘶声”类型的测试。

    for (var i = 0; i < 10; i++) {
      var message = 'Marco';
      
      var isOdd = (i % 2) != 0; // if it can't be evenly divided by 2...
      if (isOdd) {
        message = 'Polo';
      }
    
      console.log(message);
    }
    

    https://jsfiddle.net/sheriffderek/dtkj0aby/

    你也可以用许多不同的方式来写它。

    for (var i = 0; i < 10; i++) {
      console.log( (i % 2) != 0 ? "Marco" : "Polo" );
    }
    

    但这太丑了! (是的,你甚至可以让它更短......)

    所以,坚持阅读有助于您和您的团队阅读的内容,而不是试图变得过于疯狂和难以理解!!!代码对人类和计算机一样多。这是我们的共享语言。

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 1970-01-01
      • 2019-04-09
      • 2021-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2015-05-16
      相关资源
      最近更新 更多