0

switch (x)
{
case A:
case B:
case C:
.doSomething()
}
これらの 3 つのケースを 1 行にまとめる方法はありますか? たとえば、このようなもの
case A, B, C:ですか?

4

3 に答える 3

9

改行を削除してそれらをcaseすべて同じ行に配置する以外は、いいえ。

case3 つのキーワードと 3 つのが必要:です。

詳細が必要な場合は、JLS のセクション 14.11 を参照してください。特に:

SwitchLabel:
    case ConstantExpression :
    case EnumConstantName :
    default :

SwitchLabelcase 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 行に入れる (つまり、改行をしない) ことはあまり一般的ではなく、典型的なプログラマー (誤って改行を削除したと思うかもしれません) が一見しただけでは明確に理解できないでしょう。

于 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 に答える