为什么没有打印出 fizzbuzz?

Why no fizzbuzz being printed out?

这是我的代码。我没有打印任何 Fizz 嗡嗡声。我只得到数字。谁能解释为什么?谢谢

printOut = ""; 

for (var x=1; x < 101 ; x++) {


  switch(x) {

      case((x%3) == 0):
      printOut+="\n"+ "Fizz" ;
      break;

      case((x%5) == 0):
      printOut+="\nBuzz";
      break;

      default:
      printOut+="\n" + x ;
      break;

  }

}
console.log(printOut);

检查您如何使用 switch 语句:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

在开关行中,x 是您的表达式,((x%5) == 0) 是您的值。我想你的意思是做一些 if/else 陈述。

您没有正确使用 switch 语句。只要 x 等于 value.

,每个 case (value): 基本上应该是 运行

要解决此问题,只需完全删除 switch 语句,并用 if 替换每个 case:

for (var x = 1; x < 101; x++) {
    if ((x % 3) == 0)
        printOut += "\n" + "Fizz";
    else if ((x % 5) == 0)
        printOut += "\nBuzz";
    else
        printOut += "\n" + x;
}

您正在尝试将 x 的值与值为 truefalse 的表达式匹配。您可以在开关中传递 true,开关将 "match" 与第一个评估为 true 的 case 语句。

虽然这种 sort-a 有效,但我建议只执行 if/else 语句。这不适用于数字 30,它对 X%3 和 x%5 都为真。它会先匹配x%3然后到此为止。

printOut = ""; 

for (var x=1; x < 101 ; x++) {


  switch(true) {

      case((x%3) == 0):
      printOut+="\n"+ "Fizz" ;
      break;

      case((x%5) == 0):
      printOut+="\nBuzz";
      break;

      default:
      printOut+="\n" + x ;
      break;

  }

                             }
console.log(printOut);