0

switch (x)
{
case A:
case B:
case C:
.doSomething()
}
有没有办法可以将这 3 个案例放在一条线上?例如像这样的东西
case A, B, C:

4

3 回答 3

9

除了删除换行符并将这些cases 全部放在同一行之外,没有。

您将必须拥有三个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 回答