所以我在这项任务中需要做的是打印出1-20的数字。代码也应该符合规则:
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;
我得到的错误:&#34; 当你应该打印1 &#34;
时,你打印了FizzBuzz答案 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)
不正确(建议在控制台中打印结果以查明原因)。
运行代码段以尝试
// 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;