卡在 Codecademy 的 Javascript fizzbuzz 应用程序中

Stuck in Codecademy's Javascript fizzbuzz app

以下是 Codecademy 的说明:

Print out the numbers from 1 - 20.

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.

这是我的代码:

for (i = 1; i <= 20; i++) {
    if (i % 3 == 0) {
    console.log("Fizz");
    }
    else if (i % 5 == 0) {
    console.log("Buzz");    
    }
    else if (i % 3 == 0 && i % 5 == 0) {
    console.log("FizzBuzz");
    }
    else {
    console.log(i);    
    }
}

问题是它不会为数字 15 打印 "FizzBuzz"。它只打印 "Fizz"。

我在这里错过了什么?

else if only 运行如果到目前为止所有其他陈述都是错误的。由于 i % 3 为真,剩余的 else/if 语句永远不会 运行。尝试这样的事情:

for (i = 1; i <= 20; i++) {
    if (i % 3 == 0 && i % 5 == 0) {
        console.log("FizzBuzz");
    }
    else if (i % 5 == 0) {
        console.log("Buzz");    
    }
    else if (i % 3 == 0) {
        console.log("Fizz");
    }
    else {
        console.log(i);    
    }
}

如果您想使用嵌套条件,这似乎可行。

for ( i=1 ; i < 21 ; i++){
    if(i % 3 === 0) {
        if(i % 5 === 0){
            console.log("FizzBuzz");
        }
        else {
            console.log("Fizz");
        }
    }
    else if (i % 5 === 0) {
        if ( i % 3 === 0){
            console.log("FizzBuzz");
        }
        else{
            console.log("Buzz");
        }
    }
    else{
        console.log(i);
    }
}

使用三元运算符在 javascript 中直接发出 fizzBu​​zz(一行 shorthand 用于 if-else 语句) 要了解三元运算符,请转到 here

var i = 1;
while (i <= 20){
    console.log((i % 3 === 0 && i % 5 === 0) ? "FizzBuzz" : (i % 3 === 0) ? "Fizz" : (i % 5 === 0 ? "Buzz" : i));
    i++;
}