0

如果数字 1 - 20 可被 3、5 或两者整除,我正在尝试让程序打印出控制台日志语句。这是我正在使用的,但它不会检查两个数字....

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

我试着搜索这个,但我认为我的搜索条件没有很好地说明。感谢你们!

4

4 回答 4

2

你在第三个比较中有一个错字。应该是这样的:

else if ((i % 5) === 0 &&(i % 3) === 0) 

此外,必须先进行比较,否则会被其他两个比较短路。

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

小提琴

于 2013-07-25T21:29:45.060 回答
1

首先检查两者

for (i = 1; i < 21 ; 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);
    }
}
于 2013-07-25T21:30:52.520 回答
0
 for (i = 1; i < 21 ; i++) {
       if ((i % 5)==0 && (i % 3) == 0) {
           console.log("Fizz"); 
       } else if (i % 5 === 0) { 
           console.log("Buzz"); 
       } else if (i % 3 === 0)  { 
           console.log("FizzBuzz"); 
       } else { 
           console.log(i); 
       }

看两者是否适用的需要先,否则永远不会满足。

您需要将该条件评估为: (i % 5) == 0 && (i % 3) == 0

于 2013-07-25T21:32:49.370 回答
0

有两个问题:

  • 检查(x && y) === 0不等于检查(x === 0) && (y === 0)
  • 你必须把第三个条件放在第一位,否则永远达不到

代码:

for (i = 1; i < 21 ; 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);
  }
}
于 2013-07-25T21:35:32.913 回答