switch文は処理を切り替えることができます。
ifとの違いは条件によって分岐されるではなく条件式が値に一致するかどうかという単純なもの。
switch文の構文
switch(式){
case 値1:
処理1;
break;
case 値2:
処理2;
break;
case 値3:
処理3;
break;
default:
その他の処理
; }
・ 式に代入できる型は「byte」,「short」,「int」,「char」のみ
・ 式の値によって処理の開始位置が決まる
・ breakで{ }を抜ける
サンプルコード
package test;
public class Sample {
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
switch(num){
case 1:
System.out.println("週1回コース:7000円");
break;
case 2:
System.out.println("週2回コース:8000円");
break;
case 3:
System.out.println("週3回コース:9000円");
break;
default:
System.out.println("範囲外の数値が入力されました!");
System.out.println("週1回コース:1");
System.out.println("週2回コース:2");
System.out.println("週3回コース:3");
System.out.println("の数値から選択してください。");
}
//switch文を抜けたのを確認するための処理
System.out.println("新規ご入会の場合入会料5000円を別途申し受けます。");
}
}
コンソールから1を入力したときの実行結果
週1回コース:7000円 新規ご入会の場合入会料5000円を別途申し受けます。
出力結果を見てわかるようにsum変数(処理)が1だったら
1の結果が実行され2と3の処理はは飛ばされswitch文を抜けた後の最後処理が実行されています。
コンソールから4を入力したときの実行結果
範囲外の数値が入力されました!
週1回コース:1
週2回コース:2
週3回コース:3
の数値を入力してください。
新規ご入会の場合入会料5000円を別途申し受けます。
処理4の場合は1~3にに該当しないためdefault(その他の処理)とswitch文を抜けた後の処理が実行されています。
複数の処理を実行したいとき
breakを記述しなければ、複数の処理を実行できます。
試しにbreakを外して実行してみます。
package test;
public class Sample {
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
switch(num){
case 1:
System.out.println("週1回コース:7000円");
case 2:
System.out.println("週2回コース:8000円");
case 3:
System.out.println("週3回コース:9000円");
break;
default:
System.out.println("範囲外の数値が入力されました!");
System.out.println("週1回コース:1");
System.out.println("週2回コース:2");
System.out.println("週3回コース:3");
System.out.println("の数値から選択してください。");
}
//switch文を抜けたのを確認するための処理
System.out.println("新規ご入会の場合入会料5000円を別途申し受けます。");
}
}
コンソールから1を入力した場合の実行結果
週1回コース:7000円 週2回コース:8000円 週3回コース:9000円 新規ご入会の場合入会料5000円を別途申し受けます。
処理1と処理2が実行され最後のswitch文を抜けた後の処理が実行されています。
コンソールから2を入力した場合の実行結果
週2回コース:8000円 週3回コース:9000円 新規ご入会の場合入会料5000円を別途申し受けます。
処理1が飛ばされ処理2~3と最後のswitch文を抜けた後の処理が実行されています。