我正在尝试执行一个函数,在我的 console.log 中打印 1-27 之间的数字。
当一个数字可以被3整除时,应该用“Fizz”替换该数字
当一个数字可以被 5 整除时,将其替换为“Buzz”。
如果数字可以同时被 3 和 5 整除,则将其替换为“Fizzbuzz”
引用:http://en.wikipedia.org/wiki/Fizz_buzz )
这是我的代码:
var fizzbuzz = function(start,stop) {
for (var x=1;x <= stop; x++)
var string =',';
if (x%3 == 0) {
string += 'Fizz';
}
if (x%5 == 0){
string += 'Buzz';
}
if (x%5 && x%3){
string += 'Fizzbuzz';
}
return string;
};
Console.log 给了我“,”,我不确定我做错了什么。
只是为了澄清。
我希望我的答案打印出来 1,2,Fizz,4,Buzz,Fizz,7,8,Fizz,Buzz,11,Fizz,13,14,Fizz Buzz,16,17,Fizz,19,Buzz ,Fizz,22,23,Fizz,Buzz,26,Fizz
等等,具体取决于 If 语句中的“stop”。
最佳答案
Valentins 评论是正确的,您确实需要在循环周围添加括号。 然而,您还在循环的每次迭代中重新定义字符串 var。
最后一个 if 也会使输出有点错误,例如 15 会命中所有 3 个语句并打印 FizzBuzzFizzBuzz
所以选择类似的东西
var fizzbuzz = function(start,stop) {
var string = '';
var addComma = false;
for (var x=1;x <= stop; x++){
addComma = false;
if (x%3 == 0) {
string += 'Fizz';
addComma = true;
}
if (x%5 == 0){
string += 'Buzz';
addComma = true;
}
if(addComma && x!== stop){
string+=','
}
}
return string;
};
这不是跟踪在何处添加逗号的最佳方法,但它可以完成任务。
关于javascript - 带 for 循环的 Fizzbuzz 游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28344007/