if / else语句仅记录是否,否则记录

时间:2019-01-02 00:50:14

标签: javascript if-statement math modulo

我在编码作业上遇到问题。 在这里:

  • 写一个循环,记录“ Marco !”。当我均匀的时候,
  • 马球!”当我很奇怪的时候。
  • 请勿编辑现有代码。
  • 提示1:使用if / else语句
  • 提示2:Google mod运算符(%)

我的尝试

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

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

  else  {
 console.log("Polo")
 }

当我需要记录马球时,它记录了Marco。因此,当我继续尝试解决此问题时,我想看看专家们将如何做到这一点。

2 个答案:

答案 0 :(得分: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),然后去除余数-在这种情况下,余数将为{{ 1}},所以3

现在,棘手的地方到了。如果要确定数字是否为偶数,可以使用i = 3,这是我们在% 2语句中所做的。如果数字是偶数,它将返回if,因为除以2不会得到余数。这很棘手,但我会尽力向您展示:

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

0

这就是我们在第一个代码段中的逻辑的工作方式,只有它使用布尔值true和falsy值。虚假的值是:

console.log(6 % 2);

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

进一步阅读:

答案 1 :(得分:1)

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

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

这些循环又丑又可怕!

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

还有其他一些事情。

for (some setup, a condition, what to do after each loop)

  1. setup: 创建一个变量来跟踪每次它通过方向的时候(通常写成 i 但这只是一个约定——它用于“迭代器”或“ index" 或其他任何内容。它可以是您想要的任何内容。设置也可以更复杂
  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" );
}

但那太丑了! (是的,你甚至可以缩短它...)

所以,坚持帮助你和你的团队阅读它的东西,而不是试图变得太疯狂和不可读!!!代码对人类和计算机一样多。这是我们共享的语言。