C ++有一个非常方便的switch语句,但我不知道这是否可能是java
switch(num)
{
case 1 ... 9:
do something
break
case 10 ... 19:
do something
break
default: something
}
这是可能的java,我试过,但它不起作用,至少不像c ++,是否有相同的呢?
感谢
答案 0 :(得分:3)
Java的switch
语句要求您明确列出所有匹配的值(当然除default:
子句外)。如果你的范围很大,最好使用一串if
s:
if (num >= 1 && num <= 9) {
do_something_A
} else if (num >= 10 && num <= 19) {
do_something_B
} else {
do_something_C
}
如果您的真实num
有副作用(或计算成本很高),请对其进行一次评估并将其保存到局部变量,然后在测试链中使用该局部。
答案 1 :(得分:3)
不,这是不可能的。可能最直接的等价物是:
if (num >= 1 && num <= 9)
doSomething();
else if (num >= 10 && num <= 19)
doSomethingElse();
else
doDefault();
边缘清理可能是定义inRange
实用程序函数并在if
语句中使用它:
boolean inRange(int num, int min, int max) {
return num >= min && num <= max;
}
...
if (inRange(num, 1, 9))
doSomething();
else if (inRange(num, 10, 19))
doSomethingElse();
else
doDefault();
答案 2 :(得分:1)
Java有switch语句,但您必须以这种方式使用它:
switch(num)
{
case 1:
case 2:
case 3:
case 4:
//And so far with cases
//do something
break
case 10:
case 11:
case 12:
//And so far ...
//do something
break
default: something
}
答案 3 :(得分:1)
是的,Java中有一个switch
语句。事实上它与C ++中的switch
非常相似。
但是,在案例标签中,C ++和Java都不支持范围。
对于您提供的具体示例,我将使用一系列if
语句:
if (num >= 1 && num <= 9) {
...
} else if (num >= 10 && num <= 19) {
...
} else {
...
}
答案 4 :(得分:1)
没有Java不会,在这种情况下使用一系列if-else语句会更加实际。 :)
if(num >= 1 && num < 10) {
//do something
} else if(num >= 10 && num < 20) {
//do something
} else {
//do something
}
答案 5 :(得分:1)
您正在谈论的功能并不真正属于C ++,它是一种语言扩展,例如,in GCC。但通常在C ++范围内使用if
... else
进行检查,并且在Java中应使用相同的技术:
if (num >= 1 && num <= 9) {
//Do something
} else if (num >= 10 && num <= 19) {
//Do something else
} else {
//Do something by default
}
答案 6 :(得分:0)
不,不允许范围你需要使用if else结构。