【发布时间】: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