【问题标题】:FizzBuzz only prints numbers divisible by threeFizzBu​​zz 只打印可被三整除的数字
【发布时间】:2018-08-06 21:25:15
【问题描述】:

我正在学习 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 的数字。

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

谢谢。

【问题讨论】:

    标签: javascript numbers


    【解决方案1】:

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

    如果您记录打印的数字,您可以看到这一点:

    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)
      }
    } 

    【讨论】:

    • 也许应该缩进显示第二个 if 语句,包括所有 else if,当第一个 if 为真时成为一个语句?
    • 你完全正确,@Sylwester 一开始就应该这样做
    【解决方案2】:

    您需要将前两个 if 语句与&amp;&amp; (一个布尔运算符,意思是“和”)结合起来。要使其变为真,两个语句都必须为真。如果其中一个为假,则为假)。

    JSFiddle(打开控制台查看它是否工作):http://jsfiddle.net/7236jnx4/

    你不能只拥有这个代码:

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

    只有能被 3 整除的数字才会被其他 if 语句检查。前两个 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);
      }
    } 

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2012-02-21
      • 2018-07-18
      相关资源
      最近更新 更多