为什么我的FizzBu​​zz代码无法正确输出? [英] Why is my FizzBuzz code not outputting correctly?

查看:106
本文介绍了为什么我的FizzBu​​zz代码无法正确输出?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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所有< = 100 ,但不是 i%numOne === 0 的数字> i%numTwo === 0 .那么,为什么在输出中仅显示 Fizz Buzz FizzBu​​zz ?

For the else if loop, it should console.log all numbers that are <=100, but are not i % numOne === 0 and i % numTwo === 0. So why are only Fizz, Buzz, and FizzBuzz showing up in the output?

推荐答案

好,我不想写一个答案,但是由于您是新来的,所以我将以一种更有意义的方式来说明这一点:

Ok, I didn't want to write an answer but since you're new here, I'll put this in a more meaningful way:

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

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

as stated above, there are two issues here:

  1. i!== i 永远不能为 true ,它的值相同,始终为 i === i 或您的情况错误
  2. 由于上述错误,因此您将具有以下数学公式: false%numOne 这将导致 NaN ,并且 NaN不等于0
  1. i !== i can never be true, it's the same value, it's always i === i or in your case false
  2. Since the above is false, you'll have a math equation of: false % numOne this will result in a NaN and NaN does not equal 0

希望如此,以上评论有助于理解您的问题

Hope this and the comments above helps understand your issue

这篇关于为什么我的FizzBu​​zz代码无法正确输出?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆