我想知道在执行switch语句(切换int)时是否可以检查一系列数字。喜欢的情况:1 - 50://代码。
这可能而不是写每个案例吗?感谢。
答案 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;
}