C++有一个非常方便的switch语句,但我不知道这是否可能就是Java是它可以使用在Java中此switch语句
switch(num)
{
case 1 ... 9:
do something
break
case 10 ... 19:
do something
break
default: something
}
这是可能在Java中,我已经试过,但它不起作用,至少不像C++,有没有相当于这个?
感谢
C++有一个非常方便的switch语句,但我不知道这是否可能就是Java是它可以使用在Java中此switch语句
switch(num)
{
case 1 ... 9:
do something
break
case 10 ... 19:
do something
break
default: something
}
这是可能在Java中,我已经试过,但它不起作用,至少不像C++,有没有相当于这个?
感谢
的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
}
号,范围是不允许你将需要使用的if else结构。
Java的switch
声明要求您明确列出所有匹配的值(当然,除default:
子句外)。如果你正在做大量的范围,它可能是更好用的if
个链:
if (num >= 1 && num <= 9) {
do_something_A
} else if (num >= 10 && num <= 19) {
do_something_B
} else {
do_something_C
}
如果你真正num
有副作用(或者是平原昂贵的计算),一旦评估,并将其保存到一个局部变量,然后在测试链中使用该局部变量。
是的,但是这不是swtch语句,需要更多的写作,虽然...我知道它做了同样的事情,但仍然会很好 – miatech
@miatech嗯,Java不会做开关范围,所以你做与你有什么。 (这是一个非常机械的转换,所以做起来并不难,重构范围测试到自己的函数中...... err ...私有静态方法,如果它可以帮助你准确地做到的话。)如果你真的很热衷,你总是可以开始一个JSR增加了这一点,但在大多数人的雷达中,说实话都是很低的。 –
是的,在Java中有一个switch
语句。它实际上非常类似于C++中的switch
。
但是,案例标签中既不支持C++也不支持Java支持范围。
对于您提出我会用一系列if
声明的具体例子:
if (num >= 1 && num <= 9) {
...
} else if (num >= 10 && num <= 19) {
...
} else {
...
}
不,这是不可能的。也许最简单的等价物是:
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();
未安装Java不,在一个像这样的情况它会使用一系列if-else语句要实用得多。 :)
if(num >= 1 && num < 10) {
//do something
} else if(num >= 10 && num < 20) {
//do something
} else {
//do something
}
你所谈论的并不真正属于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
}
这并不在C++中工作,要么。 –
阅读Java的'switch'语句。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –
@Oli你认为一些编译器支持这个语言作为该语言的扩展吗? –