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

Java Java
スポンサーリンク

では ユーザー入力でON/OFFを切り替えられるメニューシミュレーション を作りましょう。
これもビット演算でフラグ管理します。


サンプル:メニューON/OFFシミュレーション

import java.util.Scanner;

public class MenuSimulation {
    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("終了しました。最終状態:");
        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. 切り替えたい番号(1〜3)を入力すると、そのメニューだけON/OFFが反転します。
  3. 4を入力すると終了し、最終状態を表示します。

ポイント

  • flags ^= FLAGON/OFFの切り替えが簡単にできる。
  • (flags & FLAG) != 0ONかOFFか確認
  • ビット演算のおかげで、整数1つで複数状態を管理できる。
  • ユーザー入力でリアルタイムに切り替えできるので、理解が深まります。
タイトルとURLをコピーしました