Java | ミニアプリ:メニュー選択プログラム(switch文)

Java Java
スポンサーリンク

では今回は、ユーザー入力で動くミニアプリを作りながら、switch文の実践力を鍛えましょう。
初心者でも実務に近い「メニュー制御の考え方」が身につきます。


学べること

  • ユーザーの入力を Scanner で受け取る方法
  • 入力値に応じて処理を switch で分岐
  • while ループでメニューを繰り返す(終了条件つき)

完成イメージ

=== メニュー ===
1: 商品一覧を見る
2: 商品を検索する
3: 購入手続きへ進む
0: 終了する
番号を選んでください: 2

→ 商品を検索します

=== メニュー ===
1: 商品一覧を見る
2: 商品を検索する
3: 購入手続きへ進む
0: 終了する
番号を選んでください: 0

→ プログラムを終了します

プログラムの流れ(図でイメージ)

┌─────────────────────────────┐
│ while (true) {                                    │
│   メニューを表示                                    │
│   ユーザーから番号を入力                             │
│   switch (入力値) {                                │
│     case 1: 商品一覧を表示 → break;                │
│     case 2: 検索 → break;                         │
│     case 3: 購入 → break;                         │
│     case 0: 終了 → break + ループ終了              │
│     default: エラーメッセージ                       │
│   }                                               │
│ }                                                 │
└─────────────────────────────┘

コード全体(完成版)

import java.util.Scanner;

public class MenuApp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 入力を受け取る準備

        while (true) {
            // メニュー表示
            System.out.println("=== メニュー ===");
            System.out.println("1: 商品一覧を見る");
            System.out.println("2: 商品を検索する");
            System.out.println("3: 購入手続きへ進む");
            System.out.println("0: 終了する");
            System.out.print("番号を選んでください: ");

            int choice = scanner.nextInt();  // 入力値を取得

            // 入力値に応じた処理
            switch (choice) {
                case 1:
                    System.out.println("→ 商品一覧を表示します。\n");
                    break;
                case 2:
                    System.out.println("→ 商品を検索します。\n");
                    break;
                case 3:
                    System.out.println("→ 購入手続きに進みます。\n");
                    break;
                case 0:
                    System.out.println("→ プログラムを終了します。");
                    scanner.close();
                    return; // mainメソッドを終了
                default:
                    System.out.println("→ 無効な番号です。0〜3を入力してください。\n");
            }
        }
    }
}
Java

コード解説(初心者向けにやさしく)

説明
Scanner scanner = new Scanner(System.in);コンソールからキーボード入力を受け取る準備。
while (true)無限ループ。メニューを繰り返し表示するために使用。
System.out.print()printlnと違い、改行せずに表示。入力を同じ行で受けたいときに便利。
int choice = scanner.nextInt();入力された整数を読み取る。例:ユーザーが「2」と入力したら choice は 2。
switch (choice)入力値によって分岐。1〜3 はそれぞれの処理、0 は終了、その他はエラー。
return;main メソッドを終了。break ではなく return で完全にプログラムを抜ける。
scanner.close();Scanner を閉じる。リソースをきちんと解放する実務的な習慣。

応用課題(レベルアップ練習)

課題1:検索ワードを入力できるようにしてみよう

2番を選んだときに「検索したい商品名」を入力できるように変更してみましょう。

ヒント:

nextInt() のあとに nextLine() を使うときは、改行文字を消すために一行読み飛ばしが必要です。

✅サンプル改良コード

import java.util.Scanner;

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

        while (true) {
            System.out.println("=== メニュー ===");
            System.out.println("1: 商品一覧を見る");
            System.out.println("2: 商品を検索する");
            System.out.println("3: 購入手続きへ進む");
            System.out.println("0: 終了する");
            System.out.print("番号を選んでください: ");

            int choice = scanner.nextInt();
            scanner.nextLine(); // 改行を読み飛ばす

            switch (choice) {
                case 1:
                    System.out.println("→ 商品一覧を表示します。\n");
                    break;
                case 2:
                    System.out.print("検索したい商品名を入力してください: ");
                    String keyword = scanner.nextLine();
                    System.out.println("→ 「" + keyword + "」を検索しました。\n");
                    break;
                case 3:
                    System.out.println("→ 購入手続きに進みます。\n");
                    break;
                case 0:
                    System.out.println("→ プログラムを終了します。");
                    scanner.close();
                    return;
                default:
                    System.out.println("→ 無効な番号です。\n");
            }
        }
    }
}
Java

実務での発展ポイント

テーマ解説
🔸 ログ出力実務では System.out.println の代わりに Logger(SLF4Jなど)を使う。
🔸 入力値チェック不正入力(数字以外)を try-catch で安全に処理する。
🔸 メニュー構造化各処理をメソッドに分けると読みやすくなる。
🔸 Enum メニュー定数を enum で管理して、switch で分岐する設計も便利。
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました