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:にプログラムの実行が流れたからだ。
注意が必要である。