この記事の目次
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の演習問題