什么是错误的在这个if/else代码

What is a wrong in this if/else code?

本文关键字:if else 代码 错误 什么      更新时间:2023-09-26

我对这些说明有什么问题?把数字从1到20打印出来。规则:对于能被3整除的数字,输出"Fizz"。对于能被5整除的数字,打印出"Buzz"。对于能被3和5整除的数字,在控制台中打印出"FizzBuzz"。否则,直接打印数字。

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

number % 3 == 0。此外,您需要了解else if并考虑您的条件的顺序。这就是你解决这个问题所需要的。

仅仅向你展示解决方案对你学习编程没有帮助。

您似乎正在尝试这样做:

for (var i = 1; i < 21; 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 ((i % 3) === 0 && (i % 5) === 0) {
        console.log("FizzBuzz");
    }

否则,对于数字15

就会出错。

%运算符的返回值不是布尔值,而是除法运算的余数。所以你需要检查余数是否为0。

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

%操作符返回余数,因此:

9 % 3

结果是0 -因为3是9的平方根…您的if条件正在检查非零结果。

你应该做的是:

if (! (i % 3))

检查是否返回0。

另外,考虑在代码中使用sme else if并进行适当的嵌套,这样就不会有问题了。

你没有检查这个数字是否能被3或5整除。你在检查这是不是真的。

这是你应该做的:

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

mod函数"%"返回余数。如果没有余数,这是一个干净的除法。所以你要确保结果是0。

i % x返回i / x的余数,因此您需要对照== 0进行检查。

此外,您应该先检查i % 3 == 0 && i % 5 == 0,然后使用else if,否则,无论前面的语句是否已经为真,您的所有语句都将始终执行。

for (var i = 1; i < 21; 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);
  }
}