我正在学习JavaScript,并且正在做一个练习...我似乎没有“理解”它。
使用console.log编写程序的目的,该程序将打印从1到100的所有数字,但有例外。
如果数字可以被3和5整除,则程序应打印“ FizzBuzz”。
仅当数字可被3整除时,程序才应打印“ Fizz”。
仅当数字可被5整除时,程序才应打印“ Buzz”。
如果这些例外不适用于1到100之间的数字,则应自行打印该数字。
这是我的代码:
for (i = 0; i <= 100; i++) {
if (i % 3 == 0)
if (i % 5 == 0) {
console.log("FizzBuzz")
} else if (i % 3 == 0) {
console.log("Fizz")
} else if (i % 5 == 0) {
console.log("Buzz")
} else {
console.log(i)
}
}
当然,此代码不起作用。
不打印不适用于例外的数字。从1到100的数字不会打印。
任何帮助解释原因的...我将非常感谢。
谢谢。
答案 0 :(得分:2)
您的尝试不起作用,因为它只会将i%3 === 0
的值记录到控制台,因为在输入第二个块之前,第一个if
必须为true。
如果您记录要打印的数字,则可以看到以下内容:
for (i = 0; i <= 100; i++) {
if (i % 3 == 0) // only if this returns "true" the next block will execute
if (i % 5 == 0) {
console.log("FizzBuzz " + i)
} else if (i % 3 == 0) {
console.log("Fizz " + i)
} else if (i % 5 == 0) {
console.log("Buzz " + i)
} else {
console.log(i)
}
}
将前两个if语句组合起来就可以了!
for (i = 0; i <= 100; i++) {
if (i % 3 == 0 && i % 5 == 0) {
console.log("FizzBuzz")
} else if (i % 3 == 0) {
console.log("Fizz")
} else if (i % 5 == 0) {
console.log("Buzz")
} else {
console.log(i)
}
}
答案 1 :(得分:1)
您需要将前两个if语句与&&
(布尔运算符,表示“和”。)组合在一起,要使其变为真,两个语句都必须为真。如果其中一个为假,则变成错误)。
JSFiddle(打开控制台以查看其工作情况):http://jsfiddle.net/7236jnx4/
您不能只拥有以下代码:
if(i%3==0)
if(i%5==0){
console.log("FizzBuzz");
}
其他if
语句仅检查可被3整除的数字。前两个if
语句需要合并在一起才能起作用:
if(i%5==0&&i%3==0){
console.log("FizzBuzz");
}
for (let i = 0; i <= 100; i++) {
if (i % 5 == 0&&i%3==0) {
console.log("FizzBuzz");
} else if (i % 3 == 0) {
console.log("Fizz")
} else if (i % 5 == 0) {
console.log("Buzz")
} else {
console.log(i);
}
}