2012-05-13 29 views
0

C++有一个非常方便的switch语句,但我不知道这是否可能就是Java是它可以使用在Java中此switch语句

switch(num) 
{ 
    case 1 ... 9: 
    do something 
    break 
    case 10 ... 19: 
    do something 
    break 
    default: something 
} 

这是可能在Java中,我已经试过,但它不起作用,至少不像C++,有没有相当于这个?

感谢

+7

这并不在C++中工作,要么。 –

+0

阅读Java的'switch'语句。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

+0

@Oli你认为一些编译器支持这个语言作为该语言的扩展吗? –

回答

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 
} 
+0

你能想象当你达到1000范围吗?... – miatech

+1

Java不支持范围,我无法想象,因为我从来没有经历过类似的事情...使用多态而不是巨大的块或开关块... – aleroot

0

号,范围是不允许你将需要使用的if else结构。

3

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有副作用(或者是平原昂贵的计算),一旦评估,并将其保存到一个局部变量,然后在测试链中使用该局部变量。

+0

是的,但是这不是swtch语句,需要更多的写作,虽然...我知道它做了同样的事情,但仍然会很好 – miatech

+0

@miatech嗯,Java不会做开关范围,所以你做与你有什么。 (这是一个非常机械的转换,所以做起来并不难,重构范围测试到自己的函数中...... err ...私有静态方法,如果它可以帮助你准确地做到的话。)如果你真的很热衷,你总是可以开始一个JSR增加了这一点,但在大多数人的雷达中,说实话都是很低的。 –

1

是的,在Java中有一个switch语句。它实际上非常类似于C++中的switch

但是,案例标签中既不支持C++也不支持Java支持范围。

对于您提出我会用一系列if声明的具体例子:

if (num >= 1 && num <= 9) { 
    ... 
} else if (num >= 10 && num <= 19) { 
    ... 
} else { 
    ... 
} 
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(); 
1

未安装Java不,在一个像这样的情况它会使用一系列if-else语句要实用得多。 :)

if(num >= 1 && num < 10) { 
     //do something 
    } else if(num >= 10 && num < 20) { 
     //do something 
    } else { 
     //do something 
    } 
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 
}