【问题标题】:Why is my FizzBuzz code not outputting correctly?为什么我的 FizzBu​​zz 代码没有正确输出?
【发布时间】:2020-05-24 23:41:41
【问题描述】:
function counter(numOne, numTwo) {
  for (let i = 0; i <= 100; i++) {

    if (i % numOne === 0) {
      console.log("Fizz");
    }
    if (i % numTwo === 0) {
      console.log("Buzz");
    }
    if (i % numOne === 0 && i % numTwo === 0) {
      console.log("FizzBuzz");
    }
    else if (i <= 100 && i !== i % numOne === 0 || i !== i % numTwo === 0) {
      console.log(i);
    }
  }
}

counter(3, 5);

对于 else if 循环,它应该 console.log 所有 但不是 i % numOne === 0 的数字i % numTwo === 0。那么为什么只有 FizzBuzzFizzBu​​zz 出现在输出中?

【问题讨论】:

  • 你能解释一下吗:(i
  • i !== i % numOne === 0 结果:false % numOne === 0,即 NaN === 0,这绝不是真的 :)
  • 尝试将 else if 条件更改为 (i &lt;= 100 &amp;&amp; i % numOne !== 0 &amp;&amp; i % numTwo !== 0) ,因为您编写的条件不会达到目的。正如@ArberSylejmani 的评论所述
  • 欢迎来到 Stack Overflow。请注意,Stack Overflow 上已经有(很多)FizzBu​​zz 问题/答案。与其发布另一个 FizzBu​​zz 问题,不如先在这里搜索现有问题,如果所有现有问题都无法帮助您(您自己)找到答案,则仅添加一个新(您的)问题。 (在这种情况下,您将链接到现有问题并解释有什么区别)。看看How do I ask a good question?

标签: javascript fizzbuzz


【解决方案1】:

好的,我不想写答案,但既然你是新来的,我会用更有意义的方式来表达:

function counter(numOne, numTwo) {
  for (let i = 0; i <= 100; i++) {
    const isFizz = i % numOne === 0
    const isBuzz = i % numTwo === 0

    if (isFizz && isBuzz) {
      console.log("FizzBuzz");
    }
    else if (isFizz) {
      console.log("Fizz");
    }
    else if (isBuzz) {
      console.log("isBuzz")
    }
    else {
      console.log(i);
    }
  }
}

counter(3, 5);

在您的示例中,您有:

i !== i % numOne === 0

如上所述,这里有两个问题:

  1. i !== i 永远不可能是 true,它是相同的值,它总是 i === i 或者在你的情况下 错误
  2. 由于上述错误,您将有一个数学方程式:false % numOne 这将导致 NaN 并且 NaN 不等于 0

希望这个和上面的 cmets 有助于理解您的问题

【讨论】:

  • 所以我基本上只需要调整 else if,但为了更简化它,我可以在变量中创建它们。很高兴知道。在了解中级 javascript 之前,我还有很长的路要走!谢谢!
  • 进行 FizzBu​​zz 挑战的方法有很多,但我将它们分配给变量的原因是因为当名称更有意义时,当您具有相同(或相反)时更容易理解逻辑在多个地方使用的条件
  • 实际上要从我的答案中纠正一小部分,只有当 numOne 为 0 时,所以 (false % 0) 导致 NaN,任何其他数字等于 0,但我不相信数学结果在布尔值和数字之间:) 你会进入奇怪的错误领域!
  • @Thomas 你是对的,但我正在解决她所问的问题,即 else 表达式。我将更新答案以显示正确的 FizzBu​​zz 行为,以免混淆或误导任何人。
  • @Cutecat42 请看看你如何处理这个 FizzBu​​zz 而不需要你最后的“else if”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多