初心者必見!JavaのSwitch文で複数の選択肢を簡単に処理する方法

スポンサーリンク
この記事は約9分で読めます。

switch文とは

Switch文は、「もしこうなら、これをしよう」というように、条件に応じて異なる命令を実行するための特別な方法で、
特定の値に基づいて実行するコードブロックを選択する制御構文で、複数の条件を持つ場合に、複数のif-else文を使用する代わりに使うとコードが見やすくなります。

例えば、あなたが好きなアイスクリームを選ぶとします。以下のアイスクリームの番号と味があるとします。
1.チョコレート
2.バニラ
3.ストロベリー
4.ミント
あなたが番号を選ぶと、その番号に応じてアイスクリームの味が決まります。これが「switch」文の考え方です。

switch文の構文

switch(式){
case 値1:
    処理1; 
    break;
case 値2:
    処理2; 
    break;
case 値3:
    処理3; 
    break;
default:
 }
・ 式に代入できる型は「byte」,「short」,「int」,「char」のみです。
・ caseキーワードの後には比較したい値を書きます。
・ breakはそのケースを実行した後にswitch文を抜けるために使用します。
※breakを忘れると、次のケースも実行される「フォールスルー」が発生します。
・defaultはすべてのcaseに一致しない場合に実行されるコードです。

 

サンプルコードで説明


import java.util.Scanner;

public class IceCreamSwitch {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);  // スキャナーを作成して、ユーザー入力を受け取ります

        System.out.println("アイスクリームの番号を選んでください:");
        System.out.println("1: チョコレート");
        System.out.println("2: バニラ");
        System.out.println("3: ストロベリー");
        System.out.println("4: ミント");

        int iceCreamNumber = scanner.nextInt();  // ユーザーが入力した番号を取得します
        String iceCreamFlavor;

        switch (iceCreamNumber) {
            case 1:
                iceCreamFlavor = "チョコレート";
                break;
            case 2:
                iceCreamFlavor = "バニラ";
                break;
            case 3:
                iceCreamFlavor = "ストロベリー";
                break;
            case 4:
                iceCreamFlavor = "ミント";
                break;
            default:
                iceCreamFlavor = "無効な番号";
                break;
        }

        System.out.println("あなたが選んだアイスクリームは: " + iceCreamFlavor);
    }
}

出力例

アイスクリームの番号を選んでください:
1: チョコレート
2: バニラ
3: ストロベリー
4: ミント
2
あなたが選んだアイスクリームは: バニラ
説明
スキャナーの作成: Scanner scanner = new Scanner(System.in); でスキャナーを作成し、ユーザーの入力を受け取る準備をします。
番号の表示: System.out.println を使って、ユーザーに選択肢を表示します。
ユーザー入力の取得: int iceCreamNumber = scanner.nextInt(); でユーザーが入力した番号を取得します。例えば、ユーザーが「2」を入力したとします。
Switch文の開始: switch (iceCreamNumber) により、ユーザーが入力した番号(この例では「2」)を評価します。
ケースごとの処理:
case 1: では「1」が選ばれた場合の処理が書かれています。
case 2: では「2」が選ばれた場合の処理が書かれています。この場合、iceCreamFlavor が「バニラ」に設定されます。
他のケースも同様に処理が書かれています。
デフォルト処理: default: では、どのケースにも一致しない場合の処理が書かれています。この場合、「無効な番号」が設定されます。
結果の表示: 最後に、選ばれたアイスクリームの味をコンソールに表示します。この例では「2」を選んだので、「バニラ」と表示されます。

複数の処理を実行したいとき

breakを記述しなければ、複数の処理を実行することも可能ですが、
ここでは、複数の選択肢を扱うために、配列やリストを使ってユーザーが複数の選択肢を入力し、それぞれの選択肢に対してswitch文を実行する方法を記載します。


import java.util.Scanner;

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

        System.out.println("アイスクリームの番号を複数選んでください(スペースで区切って入力):");
        System.out.println("1: チョコレート");
        System.out.println("2: バニラ");
        System.out.println("3: ストロベリー");
        System.out.println("4: ミント");

        // ユーザーの入力を一行として取得
        String input = scanner.nextLine();
        // 入力をスペースで分割して配列にする
        String[] selectedNumbers = input.split(" ");

        // 各番号に対して処理を行う
        for (String numberStr : selectedNumbers) {
            int iceCreamNumber;
            try {
                iceCreamNumber = Integer.parseInt(numberStr);  // 文字列を整数に変換
            } catch (NumberFormatException e) {
                System.out.println("無効な入力: " + numberStr);
                continue;
            }

            String iceCreamFlavor;

            switch (iceCreamNumber) {
                case 1:
                    iceCreamFlavor = "チョコレート";
                    break;
                case 2:
                    iceCreamFlavor = "バニラ";
                    break;
                case 3:
                    iceCreamFlavor = "ストロベリー";
                    break;
                case 4:
                    iceCreamFlavor = "ミント";
                    break;
                default:
                    iceCreamFlavor = "無効な番号";
                    break;
            }

            System.out.println("あなたが選んだアイスクリームは: " + iceCreamFlavor);
        }
    }
}

出力例

アイスクリームの番号を複数選んでください(スペースで区切って入力):
1: チョコレート
2: バニラ
3: ストロベリー
4: ミント
2 4
あなたが選んだアイスクリームは: バニラ
あなたが選んだアイスクリームは: ミント
説明
1.スキャナーの作成: Scanner scanner = new Scanner(System.in);でスキャナーを作成し、ユーザーの入力を受け取る準備をします。
2.番号の表示: System.out.printlnを使って、ユーザーに選択肢を表示します。
3.ユーザー入力の取得: String input = scanner.nextLine();でユーザーが入力した一行の文字列を取得します。この例では「2 4」と入力したとします。
4.入力の分割: input.split(” “);で入力をスペースで分割し、選択された番号を文字列の配列に変換します。
5.各番号の処理:
・for (String numberStr : selectedNumbers)ループを使って、各選択された番号に対して処理を行います。
・Integer.parseInt(numberStr)で文字列を整数に変換します。変換できない場合はエラーメッセージを表示します。
・switch (iceCreamNumber)で選択された番号に応じたアイスクリームの味を決定します。
・System.out.println(“あなたが選んだアイスクリームは: ” + iceCreamFlavor);で結果を表示します。
6.例外処理: ユーザーが無効な番号を入力した場合、NumberFormatExceptionをキャッチして無効な入力として処理します。

にほんブログ村 IT技術ブログ IT技術メモへ

コメント

タイトルとURLをコピーしました