switch case文を利用した条件分岐処理 - Java

Javaでswitch~case文を使った条件分岐処理を紹介します。

書式

switch(判定する変数)
{
  case 条件1:
    ...(処理);
    break;
  case 条件2:
    ...(処理);
    break;
  ...
  default:
    ...(処理);
    break;
}
「判定する変数」の値をcase文で判定し、条件と一致する場合はcaseに続く処理を実行します。どの条件にも当てはまらなかった場合は、default:ブロック内の処理を実行します。 javaではcaseブロックの中にbreak,returnといったswitch文から抜ける記述は必須ではありません。(C#では必須)
break,returnがない場合は次のcase文を実行する動作になります(下記コード例参照)。

また、判定する変数にはbyte、short、char、int型を指定できます。C#ではString型を指定できますがJavaではString型は指定できません。

コード例

package javaapplicationswitch;

public class Main {
  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    int a = 3;
    switch (a) {
      case 0:
        System.out.println("0です");
        break;
      case 1:
        System.out.println("1です");
        break;
      case 2:
        System.out.println("2です");
        break;
      case 3:
        System.out.println("3です");
        break;
      default:
        System.out.println("それ以外です");
        break;
    }
  }
}

実行結果

3です

break;を記述しない場合

コード例

package javaapplicationswitch2;

public class Main {
  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    int a = 1;
    switch (a) {
      case 0:
        System.out.println("0です");
      case 1:
        System.out.println("1です");
      case 2:
        System.out.println("2です");
      case 3:
        System.out.println("3です");
      default:
        System.out.println("それ以外です");
    }
  }
}

実行結果

1です
2です
3です
それ以外です

コンパイルエラーとなる例

switch文の判定変数にString型は指定できないため、下記のコードはコンパイルエラーになります。
public static void main(String[] args) {
  String str = "Penguin";
  switch (str) {
    case "Whale":
      System.out.println("クジラです");
      break;
    case "Duck":
      System.out.println("アヒルです");
      break;
    case "Penguin":
      System.out.println("ペンギンです");
      break;
    default:
      System.out.println("それ以外です");
      break;
  }
}
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2023-12-26
作成日: 2011-02-14
iPentec all rights reserverd.