admin管理员组文章数量:1302328
I just started learning JavaScript and I have a really basic knowledge of C#.
Tried running this piece of code:
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.");
}
but it kept failing after the following:
number <= 9
Can you guys please give me a hand here?
Thanks a lot!
I just started learning JavaScript and I have a really basic knowledge of C#.
Tried running this piece of code:
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.");
}
but it kept failing after the following:
number <= 9
Can you guys please give me a hand here?
Thanks a lot!
Share Improve this question edited Sep 17, 2021 at 10:29 Audwin Oyong 2,5313 gold badges19 silver badges36 bronze badges asked Jul 28, 2013 at 17:15 GalSabGalSab 1092 silver badges8 bronze badges 7- 1 Switch/Case are not used for conditions. – Shumail Commented Jul 28, 2013 at 17:17
- So how can you do it differently apart from using if/else? and thank you! – GalSab Commented Jul 28, 2013 at 17:19
- you can use conditions in switch case. – kul_mi Commented Jul 28, 2013 at 17:20
-
Why do you want to do it without using
if
/else
(when that's -definitely- the right tool for the job)? – David Thomas Commented Jul 28, 2013 at 17:23 - Hey David, thank you. And I only want it to learn about the rest of JavaScript's abilities as I already went over if/else. – GalSab Commented Jul 28, 2013 at 17:25
4 Answers
Reset to default 7The switch statement does pare its argument with the values of the expressions in the cases.
In your code, it does pare the number
with those boolean results from the cases, so it only gets in the first case when your number
is 1 (because 1 == true
) and falls to the default
otherwise. You could simply pare them to true
, like
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.");
}
but it would be cleaner to use an if-else
construct:
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.");
Btw, much shorter would be
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."
);
You need switch(true) and the rest stays the same (I guess).
What all the other answers are missing so far is the fact that you don't need all these conditions.
if (number >= 10000) {
...
} else if (number >= 1000) {
...
} else if (number >= 100) {
...
} else if (number >= 10) {
...
} else if (number >= 1) {
...
} else {
...
}
Of course there are other ways, too. For this particular example, an easy way would be to use
var digits = (number >= 0) ? number.toString().length : 0;
For positive integers it will be the number of digits, for negative numbers it will simply be 0
. A switch/case statement over this number would be possible.
A switch(true)
is terrible style. It simply isn't what a switch/case is intended for.
Do it like this way using 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.");
Or Try using switch(true)
as condition is to be pared with Boolean expression.
本文标签: JavaScript switchcase using a conditionStack Overflow
版权声明:本文标题:JavaScript switch-case using a condition - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741706637a2393597.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论