switch文

判定のための制御式は整数型でなければならない。

switch (整数型)

ラベル

制御式を評価が行われ、その結果が0だとすると、

case 0:

に飛ぶ。

defaultラベル

制御式を評価した結果がどのcaseとも一致しないと、

default:

に飛ぶ。

break文

break;

break文を実行すると、プログラムの流れはswitch文の外へ出る。


百聞は一見に如かずですから、ソースコードの実行結果をまず見てましょう。

import java.util.Scanner;

public class Test {

  public static void main(String[] args) {
    Scanner stdIn = new Scanner(System.in);

    System.out.print("整数を入力> ");
    int n = stdIn.nextInt();

    switch (n) {
      case 0 : System.out.print("A");
               System.out.print("B");
               break;
      case 1 : System.out.print("C");
      case 2 : System.out.print("D");
               break;
      case 3 :
      case 4 : System.out.print("E");
               break;
      default: System.out.print("F");
               break;
    }
    System.out.println();
  }

}

実行してみる

$ javac Test.java
$ java Test
$ java Test
整数を入力> 1
CD
$ java Test
整数を入力> 2
D
$ java Test
整数を入力> 3
E
$ java Test
整数を入力> 4
E
$ java Test
整数を入力> 5
F
$ java Test
整数を入力> 6
F

注意

実行結果を見て分かるように整数値3と入力するとEと出力されている。
しかし、整数値3と入力されて、飛ばされた先のcase3:には何の記述もない。
なぜ、このような実行結果になっているのか。
それは、case3:に飛び、何も実行することなく下のcase4:にプログラムの実行が流れたからだ。
注意が必要である。