对于循环,我需要打印从1到20的数字

时间:2016-03-03 18:13:32

标签: javascript for-loop

所以我在这项任务中需要做的是打印出1-20的数字。代码也应该符合规则:

  1. 对于可被3整除的数字,请打印出#34; Fizz"。
  2. 对于可被5整除的数字,请打印出" Buzz"。
  3. 对于可被3和5整除的数字,打印出来" FizzBu​​zz"在里面 控制台。
  4. 否则,只需打印出数字。
  5. 
    
        for ( var i = 0 ; i < 20 ; i++) {
                    if ( i % 3) {
                        console.log("Fizz");
                    }
                    else if( i % 5) {
                        console.log("Buzz");
                    }
                    else if(i % 3 || 5) {
                        console.log("FizzBuzz");
                    }
                    else {
                        console.log(i);
                    }
                }
                
    &#13;
    &#13;
    &#13;

    我得到的错误:&#34; 当你应该打印1 &#34;

    时,你打印了FizzBu​​zz

2 个答案:

答案 0 :(得分:3)

您的代码中有一些错误

for (var i = 1; i < 21; i++) { // needs to start with 1
    // You should check this condition first 
    if (i % 3 == 0 && i % 5 == 0) { //needs '==' and '&&' operator
        console.log("FizzBuzz");
    } else if (i % 3 == 0) { // you need to check for equality to zero
        console.log("Fizz");
    } else if (i % 5 == 0) { // here too, needs '=='
        console.log("Buzz");
    } else {
        console.log(i);
    }
}

答案 1 :(得分:1)

一线解决方案

for(i=1;i<=20;i++)console.log((!(i%3)?'Fizz':'')+(!(i%5)?'Buzz':'') || i);

使用两个conditional (ternary) operators测试匹配。结果是连接在一起的,不需要第三个匹配&#34;测试。当字符串结果为空时,逻辑OR用于打印索引,即没有匹配。单个控制台语句输出最终结果。

至于OP代码中的错误,@ elclanrs已经在评论中指出了问题。 else if(i % 3 || 5)不正确(建议在控制台中打印结果以查明原因)。

运行代码段以尝试

&#13;
&#13;
// Here we output to the screen rather than the console
for(i=1;i<=20;i++)window.stdout.innerHTML+='<li>'+((!(i%3)?'Fizz':'')+(!(i%5)?'Buzz':'')||i);
&#13;
<ol id="stdout">
&#13;
&#13;
&#13;