Java Switch语句编号各不相同



我想知道在执行switch语句(切换int)时是否可以检查数字范围。类似案例:1-50://代码。

这有可能取代写每一个案例吗?谢谢

如果问题针对范围(比如groovy支持),而不必列出每一项,答案是:不幸的是不是。如此广泛的范围将使用if而不是开关来实现。有关switch使用的详细信息,请参阅Java教程。

@martin的回答是,您不能在交换机中执行此操作。但我认为你可以根据这种要求抽象出一个新的案例列表。例如:

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

在使用开关之前,您可以定义一个函数来转换案例。

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

我想问的问题是你为什么要?这是绝对可能的。您可以创建一个switch语句,其中每个整数1-50都有一个大小写,如果整数在这个范围内,则执行相应的大小写。

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

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

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;
} 

可以,只需提交祖先casebreak

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

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

然而,当你可以进行时,我认为这样做没有任何意义

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

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

case 1-50:
break;

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

最新更新