为什么没有打印出嘶嘶声

Why no fizzbuzz being printed out?

本文关键字:嘶嘶声 打印 为什么      更新时间:2023-09-26

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

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 语句。每个case (value):基本上都应该在x等于value时运行。

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

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,交换机将与第一个评估为 true 的 case 语句"匹配"。

虽然这种 a 类有效,但我建议只做 if/else 语句。这不适用于数字 30,而数字 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);