では ユーザー入力で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使い方
- プログラムを実行すると現在のON/OFF状態が表示されます。
- 切り替えたい番号(1〜3)を入力すると、そのメニューだけON/OFFが反転します。
- 4を入力すると終了し、最終状態を表示します。
ポイント
flags ^= FLAGでON/OFFの切り替えが簡単にできる。(flags & FLAG) != 0でONかOFFか確認。- ビット演算のおかげで、整数1つで複数状態を管理できる。
- ユーザー入力でリアルタイムに切り替えできるので、理解が深まります。


