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

时间:2018-12-13 13:24:53

标签: javascript

我有一个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'。请您帮我解决造成此问题的原因<预先致谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果输入如果阻止,则代码不会输入到否则阻止。 当我= 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 + ' ');
   }
  }
};

答案 2 :(得分:1)

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(', ');
}