如何在开关盒中写几个条件以具有相同的行为?

时间:2013-11-04 05:04:49

标签: java switch-statement case

switch (x)
{
case A:
case B:
case C:
  .doSomething()
}
有没有办法让我在一行中有3个案例?例如像这样的事 case A, B, C:

3 个答案:

答案 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]

之间