Java入門編:制御構文の基礎 条件分岐②:Javaのswitch文で効率よく分岐する方法(中編)

3. 実際に書いてみよう(初心者向けコード例)

ここからは、switch文を実際にコードで書いて体験するパートです。

 if文との違いや、**switchを使うことで得られる“読みやすさ”や“管理のしやすさ”**を、具体的に感じてみましょう!

✅ サンプル①:曜日に応じた処理の分岐(整数編)

まずは、整数(数字)を使って曜日を判定する例です。

java

public class DaySwitchExample {
    public static void main(String[] args) {
        int day = 3;

        switch (day) {
            case 1:
                System.out.println("今日は月曜日です");
                break;
            case 2:
                System.out.println("今日は火曜日です");
                break;
            case 3:
                System.out.println("今日は水曜日です");
                break;
            case 4:
                System.out.println("今日は木曜日です");
                break;
            case 5:
                System.out.println("今日は金曜日です");
                break;
            case 6:
                System.out.println("今日は土曜日です");
                break;
            case 7:
                System.out.println("今日は日曜日です");
                break;
            default:
                System.out.println("無効な曜日番号です");
        }
    }
}

🔍 解説:「なぜswitchを使うと読みやすいのか?」

このように、同じ変数 day を対象に複数の条件を分岐する場合、switch文を使うと

・コードの構造が明確になる

・どの条件でどの処理がされるのか一目でわかる

・メンテナンスや追加も簡単(caseを1つ追加するだけ)

といった可読性と保守性のメリットがあります。

 if文でこれをやろうとすると、毎回 if (day == 1) ... と書き続けることになり、非常に読みにくくなるのです。

✅ サンプル①:曜日に応じた処理の分岐(文字列編)

Javaでは、String(文字列)に対してもswitchが使えます(Java 7以降対応)。

java

public class DayStringSwitch {
    public static void main(String[] args) {
        String day = "月";

        switch (day) {
            case "月":
                System.out.println("今日は月曜日です");
                break;
            case "火":
                System.out.println("今日は火曜日です");
                break;
            case "水":
                System.out.println("今日は水曜日です");
                break;
            default:
                System.out.println("不明な曜日です");
        }
    }
}

このように、曜日を日本語表記で扱いたい場面などでは、文字列のswitchがとても便利です。

✅ サンプル②:メニュー番号の選択による操作

次は、**ユーザーが選択肢を選ぶような「操作メニュー」**を想定したコードです。

java

public class MenuSwitch {
    public static void main(String[] args) {
        int menu = 2;

        switch (menu) {
            case 1:
                System.out.println("商品一覧を表示します");
                break;
            case 2:
                System.out.println("カートを表示します");
                break;
            case 3:
                System.out.println("注文を確定します");
                break;
            case 4:
                System.out.println("アプリを終了します");
                break;
            default:
                System.out.println("無効なメニューです");
        }
    }
}

🔍 解説:現場でよくあるメニュー処理にも使える!

・ECサイトや業務システムでよくある「番号選択式の処理」も、switchを使えば一発。

・変更・追加も柔軟に対応可能。caseを1行追加するだけで、新しいメニューが追加できます。

・default で「その他」処理をまとめられるのも大きなメリット。

まとめ:switch文は「一目で流れがわかる」

実際にコードを書いてみるとわかるとおり、switch文は

・同じ変数を基準にした複数分岐をスッキリまとめられる

・if文よりも構造がシンプルで読みやすい

・初心者にも処理の流れがイメージしやすい

という強みがあります。

次は、switch文でやりがちなミスや注意点を紹介していきます。

「うまく動かない…」という悩みを防ぐために、ぜひチェックしてみましょう!

4. よくあるミスと注意点(switch文のポイント)

switch文はとても便利で見やすい構文ですが、使い方を間違えると予期しない動作を引き起こすこともあります。

ここでは、Java初心者がよくやってしまうミスや、switchとifの使い分けの判断基準を押さえておきましょう。

✅ breakの書き忘れに注意!

switch文で最もありがちなミスが、breakの書き忘れです。

java

int level = 1;
switch (level) {
    case 1:
        System.out.println("初級");
    case 2:
        System.out.println("中級");
    case 3:
        System.out.println("上級");
}

このコードを実行すると、level = 1のときに

初級  

中級  

上級  

と、すべての処理が実行されてしまいます。

これは「フォールスルー(fall through)」と呼ばれる動作で、Javaではbreakを入れないと次のcaseに処理が流れていく仕様になっています。

✅ 正しい書き方

java

switch (level) {
    case 1:
        System.out.println("初級");
        break;
    case 2:
        System.out.println("中級");
        break;
    case 3:
        System.out.println("上級");
        break;
}

各caseの最後には必ずbreakを書くようにするのが、ミス防止の鉄則です!

✅ default の書き忘れも意外と多い

もうひとつ忘れがちなポイントが、defaultの書き漏れです。

defaultは「どのcaseにも一致しなかったとき」の処理を担当する重要な存在。
これを省略すると、
想定外の入力があった場合に何も起こらず、ユーザーに誤解を与えてしまう可能性があります。

◾ 例:defaultの有無で印象が変わる

defaultなし:

java

switch (input) {
    case "A":
        // 処理
        break;
    case "B":
        // 処理
        break;
}

→「C」など、想定外の値が入力されたとき、無反応になってしまう。

defaultあり:

java

default:
    System.out.println("無効な選択肢です。もう一度入力してください。");

→ エラーハンドリングもできて、ユーザーフレンドリーな動きに。

✅ if文との使い分けはどう考える?

Javaでは、switch文もif文も条件分岐を行うための構文ですが、どちらを使うか迷うこともあります。
以下を参考に、状況に応じて使い分けてみましょう。

◾ switch文が向いているケース

比較するのが1つの変数で、その値に応じて処理を分けたい

選択肢が3つ以上ある(1〜5、A〜Eなど)

値が固定されている(文字列・数値・列挙型など)

◾ if文が向いているケース

条件が複雑(AかつB、AまたはBなどの論理式)

複数の変数や演算結果を比較する必要がある

範囲判定や不等号を使いたい(例:if (score >= 90)

◾ 実務での使い分けの一例

java

// switchが向いている例
switch (command) {
    case "start":
    case "stop":
    case "restart":
        // 状態に応じた処理
}

// ifが向いている例
if (score >= 90 && score <= 100) {
    // 成績:A
}

このように、比較対象の性質と処理の複雑さによって、switchとifを使い分けるのがポイントです。

まとめ:switch文を安全に使う3つのポイント

1.breakは絶対に忘れない!

2.defaultは必ず入れて、例外にも備える!

3.「同じ変数 × 選択肢が複数」ならswitchが読みやすい!

こうした基本を押さえておくことで、switch文はif文よりもスッキリと、ミスの少ない分岐処理が書けるようになります。

次は、switch文の応用的なテクニックや、よりスマートに書く方法をご紹介していきます!

続き👉Java入門編:制御構文の基礎 条件分岐②:Javaのswitch文で効率よく分岐する方法 後編 | 有限会社バナナドリーム