我在编码作业上遇到问题。 在这里:
我的尝试
let x=11;
let y=4;
let i=x%y;
if (i) {
console.log("Marco!")
}
else {
console.log("Polo")
}
当我需要记录马球时,它记录了Marco。因此,当我继续尝试解决此问题时,我想看看专家们将如何做到这一点。
答案 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
)
i
但这只是一个约定——它用于“迭代器”或“ index" 或其他任何内容。它可以是您想要的任何内容。设置也可以更复杂i
小于 10,就再次运行循环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" );
}
但那太丑了! (是的,你甚至可以缩短它...)
所以,坚持帮助你和你的团队阅读它的东西,而不是试图变得太疯狂和不可读!!!代码对人类和计算机一样多。这是我们共享的语言。