Java | フラグ管理を使ったメニューのON/OFFを作るステップ実装

Java Java
スポンサーリンク

では ON/OFF を視覚的にわかりやすく表示するバージョン を作りましょう。
ここでは、ON は ✅、OFF は ❌ の記号で表示します。これで状態が一目で分かります。


サンプル:記号付きメニューシミュレーション

import java.util.Scanner;

public class MenuSimulationVisual {
    public static void main(String[] args) {
        // フラグ定義
        final int MUSIC = 1 << 0;   // 0001
        final int SOUND = 1 << 1;   // 0010
        final int NOTIFY = 1 << 2;  // 0100

        int flags = 0; // 初期状態:全てOFF
        Scanner sc = new Scanner(System.in);
        boolean running = true;

        while (running) {
            System.out.println("\n=== メニュー状態 ===");
            System.out.println("1. 音楽: " + ( (flags & MUSIC) != 0 ? "✅ON" : "❌OFF"));
            System.out.println("2. 効果音: " + ( (flags & SOUND) != 0 ? "✅ON" : "❌OFF"));
            System.out.println("3. 通知: " + ( (flags & NOTIFY) != 0 ? "✅ON" : "❌OFF"));
            System.out.println("4. 終了");
            System.out.print("切り替えたい番号を入力: ");

            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    flags ^= MUSIC; // 音楽のON/OFF切り替え
                    break;
                case 2:
                    flags ^= SOUND; // 効果音のON/OFF切り替え
                    break;
                case 3:
                    flags ^= NOTIFY; // 通知のON/OFF切り替え
                    break;
                case 4:
                    running = false; // 終了
                    break;
                default:
                    System.out.println("無効な選択です");
            }
        }

        System.out.println("\n=== 最終状態 ===");
        System.out.println("音楽: " + ((flags & MUSIC) != 0 ? "✅ON" : "❌OFF"));
        System.out.println("効果音: " + ((flags & SOUND) != 0 ? "✅ON" : "❌OFF"));
        System.out.println("通知: " + ((flags & NOTIFY) != 0 ? "✅ON" : "❌OFF"));

        sc.close();
    }
}
Java

改良ポイント

  1. ON/OFFを記号で表示 → 状態が直感的にわかる
  2. ビット演算の仕組みはそのまま → flags1つで複数状態を管理
  3. 入力に応じてリアルタイムに切り替え可能

💡さらに発展させるアイデア:

  • 色付きで表示(赤=OFF、緑=ON)
  • メニュー項目を増やす(最大32個まで整数1つで管理可能)
  • GUI(Swing/JavaFX)にしてクリックでON/OFF切り替え
タイトルとURLをコピーしました