使用 switch 语句检查数字是奇数还是偶数的程序

Program to check if number is odd or even using switch statement

我正在尝试编写一个使用 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”它也会 return “hi is an odd number”。这是我修改后的 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 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");
}

这不是 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;
}