是否可以在Java中使用此switch语句

时间:2012-05-13 15:52:00

标签: java switch-statement

C ++有一个非常方便的switch语句,但我不知道这是否可能是java

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

这是可能的java,我试过,但它不起作用,至少不像c ++,是否有相同的呢?

感谢

7 个答案:

答案 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结构。