陷入Codecademy的Javascript fizzbuzz应用程序

时间:2015-03-24 01:09:12

标签: javascript fizzbuzz

以下是Codecademy的说明:

  

打印出1到20之间的数字。

     

对于可被3整除的数字,请打印出#34; Fizz"。

     

对于可被5整除的数字,请打印出" Buzz"。

     

对于可被3和5整除的数字,请打印出#34; FizzBu​​zz"在里面   控制台。

     

否则,只需打印出数字。

这是我的代码:



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);    
    }
}
&#13;
&#13;
&#13;

问题在于它不会打印&#34; FizzBu​​zz&#34;对于15号。它只是打印&#34; Fizz&#34;。

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

如果只有在目前为止所有其他语句都为假的情况下才会运行。由于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);    
    }
}

答案 1 :(得分:1)

如果你想使用嵌套条件,这似乎有效。

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);
    }
}

答案 2 :(得分:0)

使用tenary运算符在javascript中直接使用fizzBu​​zz(if-else语句的单行速记) 了解tenary运营商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++;
}