この記事の目次
1. switch文による分岐
● if文からswitch文へ
if(条件値 = 値1){ 処理1 }else if(条件値 = 値2){ 処理2 }else if(条件値 = 値3){ . . . }else{ }
上のようなif-else文がよく見かけるかと思います。そのコードには条件が3つ以上含まれ、そのいずれも「条件値 = 値」担っていることに注目してください。このように同じ変数に対sて繰り返し比較を行っている場合はif文をよりスマートな下のswitch文に書き換えることができます。
● switch文の構文
switch(条件値){ case 値1: 処理1 break; case 値2: 処理2 break; . . . default 処理X }
● 例題
問題:自分の好きの月を入力して、その月に何日まであるか確認するプログラムを作成する。
package helloworld; import java.util.Scanner; //Scannerクラスのimport public class HelloWorld { public static void main(String[] args) { int month; Scanner scanner = new Scanner(System.in); System.out.print("あなたは何月が好きですか:"); month = scanner.nextInt(); switch (month) { case 1: System.out.println(month + "月は31日までです"); break; case 2: System.out.println(month + "月は28日までです"); break; case 3: System.out.println(month + "月は31日までです"); break; case 4: System.out.println(month + "月は30日までです"); break; case 5: System.out.println(month + "月は31日までです"); break; case 6: System.out.println(month + "月は30日までです"); break; case 7: System.out.println(month + "月は31日までです"); break; case 8: System.out.println(month + "月は31日までです"); break; case 9: System.out.println(month + "月は30日までです"); break; case 10: System.out.println(month + "月は31日までです"); break; case 11: System.out.println(month + "月は30日までです"); break; case 12: System.out.println(month + "月は31日までです"); break; default: System.out.println("何月かを正しく入力してください。"); } } }
実行結果:
2. switch文に書き換えることができる条件
3. switch文記述の際の注意点
条件値あるいは変数
だけです。4. break文を書かない場合
switch文の正体は「条件に一致するcaseラベルまで処理をジャンプさせる命令」にすぎません。break文で(処理を中三してswitch文を抜ける)という指示がなければ、次のcase文へ処理が進んでしまいます。
以下のプログラムはあるcaseラベルの処理にbreak文を入れなかった時の処理:
package helloworld; import java.util.Scanner; //Scannerクラスのimport public class HelloWorld { public static void main(String[] args) { int month; Scanner scanner = new Scanner(System.in); System.out.print("あなたは何月が好きですか:"); month = scanner.nextInt(); switch (month) { case 1: System.out.println(month + "月は31日までです"); break; case 2: System.out.println(month + "月は28日までです"); break; case 3: System.out.println(month + "月は31日までです"); break; case 4: System.out.println(month + "月は30日までです"); break; case 5: System.out.println(month + "月は31日までです"); break; case 6: System.out.println(month + "月は30日までです"); break; case 7: case 8: System.out.println(month + "月は31日までです"); break; case 9: System.out.println(month + "月は30日までです"); break; case 10: System.out.println(month + "月は31日までです"); break; case 11: System.out.println(month + "月は30日までです"); break; case 12: System.out.println(month + "月は31日までです"); break; default: System.out.println("何月かを正しく入力してください。"); } } }
実行結果:
説明:
5. まとめ
ここまではswitch文の意味と使い方はわかりましたでしょうか。僕はプログラムを勉強し始めた時に、switchはif-elseの特定の場合にしか代わりに使えないため、覚えるのは嫌で、switchを使わず、どんな場合でもif-else文を使っていました。しかし、開発現場では「プログラムが動けた」だけではなく、他人が見たら「あ、わかりやすい、綺麗な」なども結構必要です。ですから、綺麗なコードになるように、頑張って覚えて利用してください。
以下は演習問題です。switch文を使いこなすように練習しましょう。
6. 演習問題
JAVAの分岐構文 switch-caseの演習問題