変数の値や式の結果の値によって処理の流れを分岐します。
switch文の書式は次の通りです。
switch (式あるいは変数){
case 定数1 : 処理1; break;
case 定数2 : 処理2; break;
.
.
default : 上記以外のときの処理;
}
式あるいは変数の値と一致する定数があれば、その定数に続いて示された処理を実行します。各処理の最後にはbreak文を必ず入力しておきます。
このbreak文はswitch文を抜け、次の処理に進むことを指示するものです。
もし、その値と一致する定数が示されていないときはdefault(デフォルトと読む)文による処理の指示があればそれを実行します。default文での指示がない場合は何もせず、次の処理に進みます。
swicth文はif文と異なり、比較演算などの論理式の真偽で処理を分岐できません。式や変数の値で処理の分岐を指示します。
つぎのプログラムは「入力された数が0から3の整数のとき、入力された数を示すメッセージ表示し、それ以外のときは範囲外といった文を表示する」ものです。
import java.io.*;
import java.text.*;
class Switch_ex {
public static void main(String args[]){
int x;
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
DecimalFormat DF = new DecimalFormat();
System.out.print("数値を入力してください : ");
try {
String s = BR.readLine();
Number Num = DF.parse(s);
x = Num.intValue();
}
catch (IOException e) { x = 0; }
catch (ParseException e) { x = 0; }
switch (x) {
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("入力された数は0から3以外です");
}
}
}
このプログラムを実際に実行すると変数xの値に一致する部分以降の処理が実行されてしまいます。これを抑止するのがbreak文の役割です。次のプログラムがbreak文を追加したものです。
import java.io.*;
import java.text.*;
class Switch_ex {
public static void main(String args[]){
int x;
BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
DecimalFormat DF = new DecimalFormat();
System.out.print("数値を入力してください : ");
try {
String s = BR.readLine();
Number Num = DF.parse(s);
x = Num.intValue();
}
catch (IOException e) { x = 0; }
catch (ParseException e) { x = 0; }
switch (x) {
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("入力された数は0から3以外です");
}
}
}
ちなみに、この例のswitch文は次のif文と等価です。
if (x == 0) System.out.pintln("入力された数値は0です。もしかすると例外かも");
if (x == 1) System.out.pintln("入力された数値は1です。");
if (x == 2) System.out.pintln("入力された数値は2です。");
if (x == 3) System.out.pintln("入力された数値は3です。");
if (x < 0 || x > 3) System.out.pintln("入力された数値は0から3以外です。");