我有一个用for循环得到的整数列表。我要编写一个打印从1到100的数字的程序。但是,对于三个打印“ Fizz”的倍数而不是数字,对于五个打印“ Buzz”的倍数。对于三和五的倍数的数字,请打印“ FizzBu​​zz”

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

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的倍数不会显示'FizzBu​​zz'。请您帮我解决造成此问题的原因

最佳答案

解决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 + ' ' );
}

07-24 18:46
查看更多