【问题标题】:Program to check if number is odd or even using switch statement使用switch语句检查数字是奇数还是偶数的程序
【发布时间】:2021-04-19 20:49:32
【问题描述】:

我正在尝试编写一个使用 switch 语句来检查数字是奇数还是偶数的程序。

出于某种原因,我没有在控制台上打印任何内容。但是,当我添加默认情况时,它会自动打印默认情况 (console.log("Invalid input")。有人可以解释为什么这种方法不起作用吗?

var enteredNumber = 40;
var enteredNumber_div_by2 = enteredNumber/2;

switch(enteredNumber_div_by2) {
    case Number.isInteger(enteredNumber_div_by2) === true:
        console.log(enteredNumber.toString() + " is an even number.");
        break;
    case Number.isInteger(enteredNumber_div_by2) === false:
        console.log(enteredNumber.toString() + " is an odd number.");
        break;
    case enteredNumber_div_by2.isNaN() === true:
        console.log("Invalid input");
        break;
    default: 
        console.log("Invalid input");
}

编辑:如果其他人像我一样试图理解 switch 语句,我根据 Rocket 的答案修改了我的代码,它现在可以工作了。我意识到这不是检查数字是奇数还是偶数的最佳方法,但我这样做只是为了理解 switch 语句。另外,我意识到我的代码并没有真正检查输入是否是数字,所以即使您输入“hi”,它也会返回“hi 是奇数”。这是我修改后的 switch 语句:

switch(Number.isInteger(enteredNumber_div_by2) === true) {
    case true:
        console.log(enteredNumber.toString() + " is an even number.");
        break;
    case false:
        console.log(enteredNumber.toString() + " is an odd number.");
        break;
    default:
        console.log("Invalid input")

编辑 2:Nina 的回答效果最好:

switch (enteredNumber % 2) {
    case 0:
        console.log(enteredNumber.toString() + " is an even number.");
        break;
    case 1:
        console.log(enteredNumber.toString() + " is an odd number.");
        break;
    default:
        console.log("Invalid input")
}

【问题讨论】:

  • 您不需要 switch 语句。你可以只使用模数。偶数是x % 2 === 0,奇数是x % 2 === 1
  • 好的,谢谢!我实际上只是在学习如何使用 switch 语句,所以这就是我尝试使用这种方法的原因。我只是想知道它为什么不起作用。

标签: javascript switch-statement


【解决方案1】:

你可以取余数并检查它的值。

switch statement 接受两个值并使用严格比较,例如 ===

如果您在case 内部使用布尔值,则需要在switch 部分使用另一个对应的布尔值。

即使 Javascript 提供在这两个部分中使用动态内容,有些人倾向于只接受常量值来比较而不是动态值。

var enteredNumber = 40;

switch (enteredNumber % 2) {
    case 0:
        console.log(enteredNumber + " is an even number.");
        break;
    case 1:
        console.log(enteredNumber + " is an odd number.");
        break;
    default:
        console.log("Invalid input");
}

【讨论】:

  • 谢谢!这正是我想要做的。
【解决方案2】:

这不是switch 语句的工作方式。 switch 用于将变量与值列表进行比较。如:

let a = 'a';
switch(a) {
    case 'a':
        break;
    case 'b':
        break;
}

如果你想检查Number.isInteger(enteredNumber_div_by2),那么只需使用if/else

if (Number.isInteger(enteredNumber_div_by2)) {
    console.log(enteredNumber.toString() + " is an even number.");
}
else {
    console.log(enteredNumber.toString() + " is an odd number.");
}

如果你出于某种原因真的想在这里使用switch,你必须这样做:

switch (Number.isInteger(enteredNumber_div_by2)) {
    case true:
        console.log(enteredNumber.toString() + " is an even number.");
        break;
    case false:
        console.log(enteredNumber.toString() + " is an odd number.");
        break;
}

【讨论】:

  • 火箭,这正是我要找的。根据我在这个论坛上阅读的内容,我知道有更好的方法来做到这一点,但我只是使用这种方法来尝试更好地理解 switch 语句。谢谢!
猜你喜欢
  • 2011-11-12
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
  • 2015-02-13
相关资源
最近更新 更多