我想知道在执行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;
}
可以,只需提交祖先case
的break
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
。现在你已经回答了问题的两种可能性。