switch (x)
{
case A:
case B:
case C:
.doSomething()
}
有没有办法可以将这 3 个案例放在一条线上?例如像这样的东西
case A, B, C:
?
问问题
7608 次
3 回答
9
除了删除换行符并将这些case
s 全部放在同一行之外,没有。
您将必须拥有三个case
关键字和三个:
's。
如果您想了解详细信息,请参阅JLS 中的第 14.11 节。尤其是:
SwitchLabel:
case ConstantExpression :
case EnumConstantName :
default :
语法中没有模式可以接受SwitchLabel 之case A,B,C:
类的东西。
但是,当多个案例做同样的事情时,按照您的示例构建案例是一种常见的做法:
switch (value) {
case 1:
case 3:
case 5:
System.out.println("It's a positive odd number less than 7!");
break;
case 4:
case 8:
System.out.println("It's a multiple of 4 between 1 and 9!");
break;
default:
System.out.println("It's just another boring number.");
break;
}
Java 程序员在阅读这样的代码时,通常会对这样的代码有一个清晰的理解。将多个案例放在一行上(即没有换行符)不太常见,并且不会被典型的程序员一眼就能清楚地理解(他们可能只是认为您不小心删除了换行符)。
于 2013-11-04T05:09:11.347 回答
1
不是您建议的方式,但您可以这样做(来自文档):
class SwitchDemo2 {
public static void main(String[] args) {
int month = 2;
int year = 2000;
int numDays = 0;
switch (month) {
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12:
numDays = 31;
break;
case 4: case 6:
case 9: case 11:
numDays = 30;
break;
case 2:
if (((year % 4 == 0) &&
!(year % 100 == 0))
|| (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("Invalid month.");
break;
}
System.out.println("Number of Days = "
+ numDays);
}
}
于 2013-11-04T05:08:34.000 回答
0
例如,当声明整数值时,您可以使用 int x int y int zetc。或者你可以有 int x, y, z 我只是想知道这是否可能与案例有关。
这是一个完全不同的问题,这取决于你在做什么。
你可以有嵌套的开关,比如
switch(x) {
case 1:
switch(y) {
case 2:
switch(z) {
case 3:
或者你可以使用一个公式,只要你知道这样的可能值的范围
switch(x * 100 + y * 10 + z) {
case 123: // x = 1, y = 2, z = 3
显然这假设 x, y, z 在 [0..9] 之间
于 2013-11-04T08:36:02.760 回答