我刚开始学习java脚本,我对C#有非常基本的了解。
试着运行那段代码:
var number = parseInt(prompt("Enter a number:"));
switch(number)
{
case number >= 1 && number <= 9: alert("The number " + number + " is a single digit number."); break;
case number >= 10 && number <= 99: alert("The number " + number + " is a two digit number."); break;
case number >= 100 && number <= 999: alert("The number " + number + " is a three digit number."); break;
case number >= 1000 && number <= 9999: alert("The number " + number + " is a four digit number."); break;
default: alert("Your number has 5 or more digits.");
}
但是在< - p>之后它仍然失败了
number <= 9
你们可以帮我们帮忙吗?
非常感谢!
答案 0 :(得分:6)
switch语句会将其参数与案例中表达式的值进行比较 - 在您的代码中,它会将number
与案例中的布尔结果进行比较,因此它仅在第一种情况下得到您的number
为1(因为1 == true
),否则会降至default
。您可以简单地将它们与true
进行比较,例如
switch(true)
{
case number >= 1 && number <= 9: alert("The number " + number + " is a single digit number."); break;
case number >= 10 && number <= 99: alert("The number " + number + " is a two digit number."); break;
case number >= 100 && number <= 999: alert("The number " + number + " is a three digit number."); break;
case number >= 1000 && number <= 9999: alert("The number " + number + " is a four digit number."); break;
default: alert("Your number has 5 or more digits.");
}
但使用if-else结构会更清晰:
if( number >= 1 && number <= 9)
alert("The number " + number + " is a single digit number.");
else if( number >= 10 && number <= 99)
alert("The number " + number + " is a two digit number.");
else if( number >= 100 && number <= 999)
alert("The number " + number + " is a three digit number.");
else if( number >= 1000 && number <= 9999)
alert("The number " + number + " is a four digit number.");
else
alert("Your number has 5 or more digits.");
顺便说一下,要短得多
var l = String(number).length;
alert( l<5
? "The number "+number+" is a "+[,"single","two","three","four"][number]+" digit number."
: "Your number has 5 or more digits."
);
答案 1 :(得分:1)
你需要切换(true),其余的保持不变(我猜)。
答案 2 :(得分:1)
到目前为止,所有其他答案都缺失的是你不需要所有这些条件。
if (number >= 10000) {
...
} else if (number >= 1000) {
...
} else if (number >= 100) {
...
} else if (number >= 10) {
...
} else if (number >= 1) {
...
} else {
...
}
当然还有其他方法。对于这个特定的例子,一个简单的方法是使用
var digits = (number >= 0) ? number.toString().length : 0;
对于正整数,它将是位数,对于负数,它将只是0
。可以使用这个数字的开关/案例陈述。
switch(true)
是一种可怕的风格。它根本不是一个开关/案例的用途。
答案 3 :(得分:0)
使用if / else:
这样做if( number >= 1 && number <= 9)
alert("The number " + number + " is a single digit number.");
else if( number >= 10 && number <= 99)
alert("The number " + number + " is a two digit number.");
else if( number >= 100 && number <= 999)
alert("The number " + number + " is a three digit number.");
else if( number >= 1000 && number <= 9999)
alert("The number " + number + " is a four digit number.");
else
alert("Your number has 5 or more digits.");
或尝试使用switch(true)
作为条件与布尔表达式进行比较。