では 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改良ポイント
- ON/OFFを記号で表示 → 状態が直感的にわかる
- ビット演算の仕組みはそのまま → flags1つで複数状態を管理
- 入力に応じてリアルタイムに切り替え可能
💡さらに発展させるアイデア:
- 色付きで表示(赤=OFF、緑=ON)
- メニュー項目を増やす(最大32個まで整数1つで管理可能)
- GUI(Swing/JavaFX)にしてクリックでON/OFF切り替え


