005 条件分岐(switch文) 021 解答例

import java.util.Scanner;

public class MonthDays {
    public static void main(String[] args) {
        // ユーザーから月の入力を受け取る
        Scanner scanner = new Scanner(System.in);
        System.out.print("月を入力してください(1から12): ");
        int month = scanner.nextInt();

        // 入力された月に対応する日数を表示する
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("31日");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("30日");
                break;
            case 2:
                System.out.println("28または29日");
                break;
            default:
                System.out.println("無効な月です");
        }

        // Scannerを閉じる
        scanner.close();
    }
}

このプログラムでは、switch文を使用して月ごとに日数を処理しています。2月はうるう年の条件によって日数が変わるため、case 2では追加の条件分岐が行われています。また、無効な月が入力された場合にはデフォルトのメッセージが表示されます。

複数のcaseに共通の処理

switch文の各caseに共通の処理を行うには、各caseの最後に処理を追加することができます。以下に例を示します。

import java.util.Scanner;

public class MonthDays {
    public static void main(String[] args) {
        // ユーザーから月の入力を受け取る
        Scanner scanner = new Scanner(System.in);
        System.out.print("月を入力してください(1から12): ");
        int month = scanner.nextInt();

        // 入力された月に対応する日数を表示する
        int days;
        switch (month) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                System.out.println("28または29日");
                // 共通の処理を追加
                days = 28; // この行を追加しても問題ありません
                break;
            default:
                System.out.println("無効な月です");
                // 共通の処理を追加
                days = 0; // この行を追加しても問題ありません
        }

        // 共通の処理
        if (days != 0) {
            System.out.println(month + "月は" + days + "日です");
        }

        // Scannerを閉じる
        scanner.close();
    }
}

このプログラムでは、daysという変数を導入し、各casedaysの値を設定しています。switch文の後に共通の処理が続くので、どのcaseに該当しても最終的に同じ処理が行われます。

「005条件分岐」問題集リスト