カテゴリ: Javaの制御構造 更新日: 2025/04/08

Java の switch 文とは?if 文の代わりに使える分岐処理

081
Java の switch 文とは?if 文の代わりに使える分岐処理

新人と先輩の会話形式で理解しよう

新人

「Java で条件分岐をするときに、if 文以外の方法はありますか?」

先輩

「あるよ!Java には switch 文 という分岐処理の方法があるんだ。」

新人

「switch 文って何ですか?」

先輩

「switch 文は、特定の値に応じて処理を分けられる便利な分岐方法だよ。詳しく説明していくね!」

1. switch 文とは?(基本的な説明)

1. switch 文とは?(基本的な説明)
1. switch 文とは?(基本的な説明)

Java の switch 文 は、特定の値に応じて異なる処理を実行するための分岐処理です。

switch 文の特徴

  • 変数の値によって異なる処理を実行できる
  • if 文よりもスッキリと書くことができる
  • 整数や文字列の値に応じた分岐が可能

例えば、1 から 3 の数値によって異なるメッセージを表示する switch 文を作成できます。

2. switch 文の基本的な書き方

2. switch 文の基本的な書き方
2. switch 文の基本的な書き方

switch 文は、特定の値に応じて異なる処理を実行するための構文です。基本的な書き方を見てみましょう。

switch 文の基本構文


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

        switch (num) {
            case 1:
                System.out.println("選択肢は 1 です");
                break;
            case 2:
                System.out.println("選択肢は 2 です");
                break;
            case 3:
                System.out.println("選択肢は 3 です");
                break;
            default:
                System.out.println("無効な選択肢です");
        }
    }
}

選択肢は 2 です

switch 文の構造

  • case:それぞれの値ごとに処理を定義
  • break:処理の実行を終了する
  • default:どの case にも該当しない場合の処理

例えば、num が 2 の場合、対応する case の処理が実行されます。

switch 文のポイント

  • 変数の値に応じた処理を簡単に記述できる
  • break を書かないと次の case の処理も実行される
  • 整数(int)、文字列(String)、列挙型(enum)の値を使える

例えば、break を書かないと、次の case も実行されてしまいます。

3. switch 文を使って数値を判定する方法

3. switch 文を使って数値を判定する方法
3. switch 文を使って数値を判定する方法

switch 文を使うと、数値の値によって異なる処理を実行することができます。例えば、特定の数値に応じてメッセージを表示するプログラムを作成してみましょう。

数値を判定する switch 文の例


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

        switch (number) {
            case 1:
                System.out.println("選択した数値は 1 です。");
                break;
            case 2:
                System.out.println("選択した数値は 2 です。");
                break;
            case 3:
                System.out.println("選択した数値は 3 です。");
                break;
            default:
                System.out.println("範囲外の数値です。");
        }
    }
}

選択した数値は 3 です。

ポイント

  • 変数 number の値に応じて case の処理が実行される
  • break を入れないと、次の case も続けて実行される
  • default はどの case にも該当しない場合の処理

このように、switch 文を使うと if 文よりもスッキリとしたコードになります。

4. switch 文を使って文字列を判定する方法

4. switch 文を使って文字列を判定する方法
4. switch 文を使って文字列を判定する方法

Java の switch 文では、数値だけでなく String 型の値を判定することもできます。例えば、曜日の名前を入力し、それに応じたメッセージを表示するプログラムを作成してみましょう。

文字列を判定する switch 文の例


public class DayCheck {
    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("該当する曜日ではありません。");
        }
    }
}

今日は水曜日です。

ポイント

  • 変数 day の値によって異なるメッセージを表示
  • 文字列比較のため、大文字・小文字の違いに注意
  • どの case にも該当しない場合は default で対応

このように、switch 文を使うと、複数の条件分岐を簡潔に記述できます。

5. switch 文と if 文の違い

5. switch 文と if 文の違い
5. switch 文と if 文の違い

switch 文と if 文はどちらも条件分岐を行うための構文ですが、いくつかの違いがあります。比較表を見てみましょう。

switch 文と if 文の比較

比較項目 switch 文 if 文
適用範囲 特定の値と一致するかどうか 数値・文字列・条件式をすべて判定可能
書き方 case ごとに処理を記述 複数の条件を else if で書く
適した場面 特定の値に応じた処理をする場合 複雑な条件を判定する場合

if 文を使った場合


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

        if (num == 1) {
            System.out.println("選択肢は 1 です");
        } else if (num == 2) {
            System.out.println("選択肢は 2 です");
        } else if (num == 3) {
            System.out.println("選択肢は 3 です");
        } else {
            System.out.println("無効な選択肢です");
        }
    }
}

選択肢は 2 です。

switch 文を使った場合


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

        switch (num) {
            case 1:
                System.out.println("選択肢は 1 です");
                break;
            case 2:
                System.out.println("選択肢は 2 です");
                break;
            case 3:
                System.out.println("選択肢は 3 です");
                break;
            default:
                System.out.println("無効な選択肢です");
        }
    }
}

選択肢は 2 です。

どちらを使うべきか?

  • 特定の値ごとに処理を分岐 … switch 文が適している
  • 複雑な条件式を判定 … if 文を使う
  • 数値・文字列の判定 … switch 文でも if 文でも対応可能

例えば、「1、2、3 のどれかに該当するか?」という場合は switch 文が便利ですが、「A かつ B のときに処理を実行する」といった条件は if 文を使う方が適しています。

6. switch 文を使った応用例(複数のケースをまとめる)

6. switch 文を使った応用例(複数のケースをまとめる)
6. switch 文を使った応用例(複数のケースをまとめる)

switch 文では、同じ処理を実行する複数の値をまとめることができます。例えば、1 月から 3 月までを「冬」、4 月から 6 月までを「春」などのように分類する場合を考えてみましょう。

複数のケースをまとめた switch 文の例


public class SeasonCheck {
    public static void main(String[] args) {
        int month = 2; // 例: 2 月

        switch (month) {
            case 12: case 1: case 2:
                System.out.println("冬です。");
                break;
            case 3: case 4: case 5:
                System.out.println("春です。");
                break;
            case 6: case 7: case 8:
                System.out.println("夏です。");
                break;
            case 9: case 10: case 11:
                System.out.println("秋です。");
                break;
            default:
                System.out.println("無効な月です。");
        }
    }
}

冬です。

ポイント

  • 同じ処理を実行する複数の値を case でまとめて記述できる
  • 重複したコードを減らし、可読性を向上させることができる
  • break を入れることで、不要な case まで処理が実行されるのを防げる

この方法を使うと、複数の値に共通する処理を効率よく記述できます。

7. switch 文を使った応用例(break を使わない場合)

7. switch 文を使った応用例(break を使わない場合)
7. switch 文を使った応用例(break を使わない場合)

通常、switch 文では break を使って処理を終了させますが、あえて break を使わないことで、連続した case の処理を実行することもできます。

break を使わない switch 文の例


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

        switch (rank) {
            case 1:
                System.out.println("金メダル");
            case 2:
                System.out.println("銀メダル");
            case 3:
                System.out.println("銅メダル");
                break;
            default:
                System.out.println("ランク外です。");
        }
    }
}

銀メダル
銅メダル

ポイント

  • break を省略すると、次の case の処理も実行される
  • 特定の case からすべての処理を実行したい場合に有効
  • 意図しない動作を防ぐため、適切な case で break を入れることが重要

このように、break を使わないことで、特定のケースに応じた追加の処理を実行できます。

8. 練習問題:switch 文を使ったプログラムを作ろう

8. 練習問題:switch 文を使ったプログラムを作ろう
8. 練習問題:switch 文を使ったプログラムを作ろう

最後に、switch 文の理解を深めるために、練習問題を解いてみましょう。以下のプログラムを完成させて、曜日を判定するプログラムを作成してください。

練習問題

ユーザーが入力した数値(1 〜 7)に応じて、対応する曜日を表示するプログラムを作成してください。


import java.util.Scanner;

public class WeekdayCheck {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("1 〜 7 の数値を入力してください: ");
        int day = scanner.nextInt();

        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("1 〜 7 の範囲で入力してください。");
        }

        scanner.close();
    }
}

1 〜 7 の数値を入力してください: 3
火曜日

ポイント

  • ユーザーの入力を Scanner で取得
  • 入力した値に応じて曜日を表示
  • default で範囲外の値を処理

この問題を実際にプログラムとして動かし、switch 文の使い方に慣れていきましょう!

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazonアソシエイト・プログラムを利用しています

Javaの制御構造の一覧へ
新着記事
【AWS】CLIの基本的な使い方まとめ【初心者向けコマンド入門】
【AWS】CLIの基本的な使い方まとめ!初心者向けコマンド入門をやさしく解説
EC2のAMI(Amazon Machine Image)とは?作成・使用方法を解説
EC2のAMI(Amazon Machine Image)とは?作成・使用方法を初心者向けにやさしく解説
EC2のステータスチェック「1/2」「2/2」「3/3」とは?エラーの対処法
EC2のステータスチェック「1/2」「2/2」「3/3」とは?エラー原因と対処法を初心者向けに解説
EC2の起動テンプレートとは?使い方と自動化活用例を紹介
AWS EC2の起動テンプレートとは?初心者向けに使い方と自動化活用例を徹底解説!
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説