switch (x)
{
case A:
case B:
case C:
.doSomething()
}
有没有办法让我在一行中有3个案例?例如像这样的事
case A, B, C:
?
答案 0 :(得分:7)
除了删除换行符并将这些case
全部放在同一行上,没有。
您必须拥有三个case
个关键字和三个:
个。
如果您需要详细信息,请参阅section 14.11 in the JLS。特别是:
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程序员通常会在阅读代码时清楚地了解代码。将多个案例放在一行(即没有换行符)的情况要少得多,而且一般情况下程序员(可能只是认为你不小心删除了换行符)一眼就看不清楚了。
答案 1 :(得分:1)
不是你建议的方式,但你可以这样做(来自documentation):
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);
}
}
答案 2 :(得分: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]
之间