Java Switch语句号变化

时间:2015-02-06 01:32:36

标签: java switch-statement case

我想知道在执行switch语句(切换int)时是否可以检查一系列数字。喜欢的情况:1 - 50://代码。

这可能而不是写每个案例吗?感谢。

5 个答案:

答案 0 :(得分:4)

如果问题针对范围(例如groovy supports),而不必列出每个项目,答案是:遗憾的是不是。这样宽的范围将使用if而不是switch来实现。有关switch用法的详细信息,请参阅Java Tutorial

答案 1 :(得分:0)

是的,您可以,只需省略祖先的break case

int test = 1;

switch(test)
{
     case 0:
     case 1:
     case 2:
         System.out.println("test");
     break;
} 

除非test等于test,否则不会打印0, 1 or 2

但是,当你能做到这一点时,我认为没有任何意义。

if(integer >= 10 && integer <= 50)

编辑:我认为我误解了这个问题,如果问题实际上是要知道是否可以仅使用一个case关键字来指定范围

case 1-50:
break;

然后不,这是不可能的,但再一次,你可以简单地使用if。现在你已经回答了问题的两种可能性。

答案 2 :(得分:0)

快速回答是否定的。在switch语句中有特定的情况允许代码执行具有逻辑。除非您指定需要处理的所有情况,否则代码执行将继续执行默认情况,而不是您想要的情况。

我想你的问题为什么你想要?这绝对是可能的。你可以使用switch语句,其中每个整数1-50都有一个大小写,如果整数落在这个范围之下,相应的大小写就会执行。

话虽如此,这是应该处理的方式。处理这种情况的正确方法是使用if语句:if (x >= 1 && x <= 50) ...

答案 3 :(得分:0)

作为@ martin的回答,你不能在交换机中这样做。但我认为你可以根据这种要求抽象一个新的案例清单。 e.g:

CASE_1: x>1 && x<50
CASE_2: x>50 && x < 100
...

您可以在使用开关之前定义一个转换外壳的功能。

答案 4 :(得分:0)

是的,我们可以通过一个技巧实现这一点,见下文:

int my_number = 30;
int switcher = my_number;

if (my_number >= 1 && my_number <= 50)
    switcher = 1;

switch (switcher) 
{ 
    case 1:  
        // My number is in range 1 - 50 
        return true;
    case 51: 
        // My number is not in range of 1 - 50.
        return false;
}