FizzBu​​zz仅打印被三整除的数字

时间:2018-08-06 21:25:16

标签: javascript numbers

我正在学习JavaScript,并且正在做一个练习...我似乎没有“理解”它。

使用console.log编写程序的目的,该程序将打印从1到100的所有数字,但有例外。

如果数字可以被3和5整除,则程序应打印“ FizzBu​​zz”。

仅当数字可被3整除时,程序才应打印“ Fizz”。

仅当数字可被5整除时,程序才应打印“ Buzz”。

如果这些例外不适用于1到100之间的数字,则应自行打印该数字。

这是我的代码:

for (i = 0; i <= 100; i++) {
  if (i % 3 == 0)
  if (i % 5 == 0) {
    console.log("FizzBuzz")
  } else if (i % 3 == 0) {
    console.log("Fizz")
  } else if (i % 5 == 0) {
    console.log("Buzz")
  } else {
    console.log(i)
  }
} 

当然,此代码不起作用。

不打印不适用于例外的数字。从1到100的数字不会打印。

任何帮助解释原因的...我将非常感谢。

谢谢。

2 个答案:

答案 0 :(得分:2)

您的尝试不起作用,因为它只会将i%3 === 0的值记录到控制台,因为在输入第二个块之前,第一个if必须为true。

如果您记录要打印的数字,则可以看到以下内容:

for (i = 0; i <= 100; i++) {
  if (i % 3 == 0) // only if this returns "true" the next block will execute
    if (i % 5 == 0) {
      console.log("FizzBuzz " + i)
    } else if (i % 3 == 0) {
      console.log("Fizz " + i)
    } else if (i % 5 == 0) {
      console.log("Buzz " + i)
    } else {
      console.log(i)
    }
}

将前两个if语句组合起来就可以了!

for (i = 0; i <= 100; i++) {
  if (i % 3 == 0 && i % 5 == 0) {
    console.log("FizzBuzz")
  } else if (i % 3 == 0) {
    console.log("Fizz")
  } else if (i % 5 == 0) {
    console.log("Buzz")
  } else {
    console.log(i)
  }
} 

答案 1 :(得分:1)

您需要将前两个if语句与&&(布尔运算符,表示“和”。)组合在一起,要使其变为真,两个语句都必须为真。如果其中一个为假,则变成错误)。

JSFiddle(打开控制台以查看其工作情况):http://jsfiddle.net/7236jnx4/

您不能只拥有以下代码:

if(i%3==0)
if(i%5==0){
 console.log("FizzBuzz");
}

其他if语句仅检查可被3整除的数字。前两个if语句需要合并在一起才能起作用:

if(i%5==0&&i%3==0){
 console.log("FizzBuzz");
}

for (let i = 0; i <= 100; i++) {
  if (i % 5 == 0&&i%3==0) {
    console.log("FizzBuzz");
  } else if (i % 3 == 0) {
    console.log("Fizz")
  } else if (i % 5 == 0) {
    console.log("Buzz")
  } else {
    console.log(i);
  }
}