Codecademy FizzBu​​zz 应用程序有效但未被接受为答案

Codecademy FizzBuzz app works but is not accepted as answer

编写应用程序的说明是: 01.打印出1-20的数字。 02.规则: - 对于能被 3 整除的数字,打印出 "Fizz"。 - 对于能被 5 整除的数字,打印出 "Buzz"。 - 对于可同时被 3 和 5 整除的数字,在控制台中打印出 "FizzBuzz"。 - 否则,只需打印出数字。

下面是我写的JavaScript:

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

以上代码打印(或记录到控制台)以下结果:

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
Buzz
16
17
Fizz
19
Buzz

然而,即使在我看来是正确的,我在 运行 代码后收到的消息是:"Oops, try again. It looks like you printed out the wrong number of items."

我知道我可能犯了一个愚蠢的错误,但我想不通,我已经花了足够多的时间尝试但无济于事。

你需要一个 else,因为如果没有插入 else,其他 ifs 会被计算

14
FizzBuzz   right (15)
Buzz       wrong (15)
16

代码:

if (i % 3 === 0 && i % 5 === 0) {
    console.log("FizzBuzz");
}
else if (i % 5 ===0) { // <------------------- insert else!
    console.log("Buzz");
}

对于 15,您的输出显示 FizzBu​​zz,还有 Buzz。这是因为在您的代码中,您编写了一个 if 语句来处理被 5 整除的情况。相反,您应该使用 else if ,就像您对 3 case 的整除性所做的那样。您的代码应该如下所示:

for (var 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);
    }
}

之前添加else
if (i % 5 ===0) {

去掉错误的Buzz和去掉

之前的else
console.log(i);

始终显示数字(也许该行应该是第一行)。

代码现在应该是:

for (var 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");
    }
    console.log(i);
}