将for循环中的整数替换为字符串



我有一个通过for循环获得的整数列表。我要做的是编写一个程序,打印从1到100的数字。但对于三的倍数,打印"Fizz"而不是数字,对于五的倍数,则打印"Buzz"。对于三和五的倍数的数字,打印"FizzBuzz">

但这就是我到目前为止得到的

function printNumber() {
for(let i = 1; i <= 100; i++) {
// document.write(i + ' ');
if(i%3 == 0) {
document.write('Fizz ');
}
else if(i%5 == 0) {
document.write('Buzz ');
}
else if(i%3 == 0 && i%5 == 0) {
document.write('FizzBuzz ');
}
else {
document.write(i + ' ');
}
}
};

但这就是我得到的结果

1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz, 16, 17, Fizz, 19, Buzz, Fizz, 22, 23, Fizz, Buzz, 26, Fizz, 28, 29, Fizz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, Fizz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56, Fizz, 58, 59, Fizz, 61, 62, Fizz, 64, Buzz, Fizz, 67, 68, Fizz, Buzz, 71, Fizz, 73, 74, Fizz, 76, 77, Fizz, 79, Buzz, Fizz, 82, 83, Fizz, Buzz, 86, Fizz, 88, 89, Fizz, 91, 92, Fizz, 94, Buzz, Fizz, 97, 98, Fizz, Buzz,

问题是,3和5的倍数数字不会打印出"FizzBuzz"。请你帮我解决这个问题的原因<提前谢谢。

fizzbuzz的另一个解决方案是使用一个字符串,您可以将单词添加到该字符串中,然后在循环结束时写入输出。

您的代码中有一个问题,因为如果i%3等于0,则不会执行其他检查,因此,您永远不会同时进行i%3和i%5的检查。

for(let i = 1; i <= 100; i++) {
let output = '';
if ( i % 3 === 0 ) output += 'Fizz';
if ( i % 5 === 0 ) output += 'Buzz';
if ( !output ) output = i;
document.write( output + ' ' );
}

如果代码进入if块,它将不会进入else-if块。当i=15时它将进入if(i%3 == 0)并打印"Fizz"然后将i增加到16并继续。。

为了解决这个问题,请先检查数字是否为3和5的倍数。

代码将是

function printNumber() {
for(let i = 1; i <= 100; i++) {
// document.write(i + ' ');
if(i%3 == 0 && i%5 == 0) {
document.write('Fizz ');
}
else if(i%5 == 0) {
document.write('Buzz ');
}
else if(i%3 == 0) {
document.write('FizzBuzz ');
}
else {
document.write(i + ' ');
}
}
};

for(let i = 1; i <= 100; i++) {
if(i%3 == 0) {
document.write('Fizz');
}
if(i%5 == 0) {
document.write('Buzz');
}
if(i%3 != 0 && i%5 != 0) {
document.write(i);
}
document.write(', ');
}

最新更新