「if-else と switch はどう書き換えられるの?」を理解すると、
コードの見やすさ・整理の仕方が一気に上達します。
if-else → switch 書き換えの考え方
| 比較方法 | 向いている構文 |
|---|---|
| 「範囲」で分けたい(例:0〜59 は〜) | if-else |
| 「特定の値」で分けたい(例:1, 2, 3 だけ) | switch |
例①:数値による単純分岐
if-else 版
int num = 2;
if (num == 1) {
System.out.println("Aクラス");
} else if (num == 2) {
System.out.println("Bクラス");
} else if (num == 3) {
System.out.println("Cクラス");
} else {
System.out.println("その他");
}
Javaswitch 版
int num = 2;
switch (num) {
case 1:
System.out.println("Aクラス");
break;
case 2:
System.out.println("Bクラス");
break;
case 3:
System.out.println("Cクラス");
break;
default:
System.out.println("その他");
}
Java🟢 ポイント:
if-else の「値が一致したら〜」という条件をswitch(値) の中で case 値: に変えるだけ。
可読性(見やすさ)が大幅アップします。
例②:複数の値で同じ処理をしたいとき
if-else 版
int day = 6;
if (day == 6 || day == 7) {
System.out.println("週末です");
} else {
System.out.println("平日です");
}
Javaswitch 版
int day = 6;
switch (day) {
case 6:
case 7:
System.out.println("週末です");
break;
default:
System.out.println("平日です");
}
Java🟢 ポイント:||(または)を使う代わりに、複数の case を続けて書けば OK。
「6 または 7」のような場合にスッキリ書けます。
例③:文字列(String)で分けたいとき
if-else 版
String fruit = "apple";
if (fruit.equals("apple")) {
System.out.println("りんご");
} else if (fruit.equals("banana")) {
System.out.println("バナナ");
} else {
System.out.println("その他のフルーツ");
}
Java🌳 switch 版
String fruit = "apple";
switch (fruit) {
case "apple":
System.out.println("りんご");
break;
case "banana":
System.out.println("バナナ");
break;
default:
System.out.println("その他のフルーツ");
}
🟢 ポイント:
Java 7 以降では String も switch に使える!equals() を書かなくてよくなり、読みやすいです。
例④:範囲条件は switch では苦手(if のままが正解)
int score = 85;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else {
System.out.println("F");
}
Java🔴 このような「80以上90未満」のような範囲条件はswitch では直接は書けません。
→ ただし「score / 10」のように加工すれば書き換え可能です👇
例⑤:if-else(範囲)→ switch(値に変換して対応)
int score = 85;
switch (score / 10) { // 10で割って十の位を見てる
case 10:
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
default:
System.out.println("F");
}
Java🟢 ポイント:switch は「特定の値」でしか判定できないので、score / 10 のように値をグループ化すれば対応できます。
例⑥:enum(列挙型)を使った書き換え(実務向け)
if-else 版
String signal = "RED";
if (signal.equals("RED")) {
System.out.println("止まれ");
} else if (signal.equals("YELLOW")) {
System.out.println("注意");
} else if (signal.equals("GREEN")) {
System.out.println("進め");
}
Javaswitch + enum 版
enum Signal { RED, YELLOW, GREEN }
Signal s = Signal.YELLOW;
switch (s) {
case RED:
System.out.println("止まれ");
break;
case YELLOW:
System.out.println("注意");
break;
case GREEN:
System.out.println("進め");
break;
}
Java🟢 ポイント:
- 実務では「定義済みの選択肢(定数)」を使いたいときに enum が便利。
switchは enum と相性が良い!(caseに型安全に書ける)
まとめ表(ざっくり比較)
| 項目 | if-else | switch |
|---|---|---|
| 条件の種類 | 複雑な条件もOK(範囲・比較・論理式) | 値が一致する場合のみ |
| 値の型 | なんでもOK | 整数, 文字, String, enum |
| 見やすさ | 条件が多いと長くなる | 候補が多くてもスッキリ |
| 処理の流れ | 上から順に評価 | 一致したcaseから実行 |
| break忘れ | 影響なし | フォールスルーが起こる(注意) |
📘 おすすめ練習法
- まず
if-elseで書く - 条件が「値の一致」だけなら →
switchに書き換えてみる breakの有無で動作を確認する
