正如你可以立即看到这是一个for循环,其中有一些if条件就在这里(是你所说的“如果条件”???)。 我实际上有两个问题。
我正在开发CodeAcademy,它已经让我这样做了:
Print out the numbers from 1 - 20.
The rules:
For numbers divisible by 3, print out "Fizz".
For numbers divisible by 5, print out "Buzz".
For numbers divisible by both 3 and 5, print out "FizzBuzz" in the console.
Otherwise, just print out the number.**
这是我到目前为止所做的,我认为它的工作正确并且一般都是正确的,但是CodeAcademy并没有说它。我想知道是否有人知道我的代码是否有问题,或者这只是一种不同的方式来完成他们要求的确切事情(参考上述规则)。
还有第二个问题,这更像是我的好奇问题。如果我们现在以15为例。 JavaScript遇到15时如何思考。 如果15可以被3分割并且剩下0,那么它不应该是console.log(“Fizz”),而不是一直到最近的底部代码和console.log(“FizzBuzz”); 有人可以向我解释一下,pleeaassee:)
for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {
if (iterator % 3 === 0) {
console.log("Fizz");
} else if (iterator % 5 === 0) {
console.log("Buzz");
} else if (iterator % 3 === 0) {
if (iterator % 5 === 0) {
console.log("FizzBuzz");
}
} else {
console.log(iterator);
}
}
答案 0 :(得分:2)
我测试了你的代码并且没有得到你描述的输出,15成功打印“FizzBuzz”。我得到15的预期结果显示为“Fizz”。它没有正常工作,因为它没有机会到达最终的if语句打印出15的“FizzBuzz”。一个简单的解决方法是当数字可以被3整除时检查可分性5。
for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {
if (iterator % 3 === 0) {
if (iterator % 5 === 0) {
console.log("FizzBuzz"); //divisible by 3 and 5
} else {
console.log("Fizz"); //only divisible by 3
}
} else if (iterator % 5 === 0) {
console.log("Buzz"); //only divisible by 5
} else {
console.log(iterator); //not divisible by 3 or 5
}
}
答案 1 :(得分:-1)
它可能会给你解决方案: 只需重新排列代码:
for (var iterator = 1; iterator <= 20; iterator = iterator + 1) {
if (iterator % 3 === 0) {
if (iterator % 5 === 0) {
console.log("FizzBuzz");
}
}else if (iterator % 3 === 0) {
console.log("Fizz");
} else if (iterator % 5 === 0) {
console.log("Buzz");
} else {
console.log(iterator);
}
}
首先检查条件是否满足可被3和5整除。 之后分别检查3和5。