Java | if-else と switch の書き換え例

Java Java
スポンサーリンク

if-elseswitch はどう書き換えられるの?」を理解すると、
コードの見やすさ・整理の仕方が一気に上達します。


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("その他");
}
Java

switch 版

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("平日です");
}
Java

switch 版

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 以降では Stringswitch に使える!
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("進め");
}
Java

switch + 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-elseswitch
条件の種類複雑な条件もOK(範囲・比較・論理式)値が一致する場合のみ
値の型なんでもOK整数, 文字, String, enum
見やすさ条件が多いと長くなる候補が多くてもスッキリ
処理の流れ上から順に評価一致したcaseから実行
break忘れ影響なしフォールスルーが起こる(注意)

📘 おすすめ練習法

  1. まず if-else で書く
  2. 条件が「値の一致」だけなら → switch に書き換えてみる
  3. break の有無で動作を確認する
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました