我有以下内容:
public static void menu () throws java.io.IOException{
int option;
do{
out.println("1. Sing");
out.println("2. Eat");
out.println("3. Sleep");
out.println("4. Wake up");
out.println("6. Out");
option=Integer.parseInt(in.readLine());
selOption(option);
} while (opcion != 6);
}
public static void selOption (int option) throws java.io.IOException {
switch (option){
case 1:
objectVariable.sing();
break;
case 2:
eat();
break;
case 3:
sleep();
break;
case 4:
wakeUp();
break;
default:
break;
}
}
我正在寻找的是一种方法,如果我选择sleep(),将禁用开关的前两个选项(sing()和eat()),但如果我选择wakeUp(),将启用再两个选择。
我知道CountDownLatch可能有效,但我不确定如何正确使用它。
CountDownLatch参考: Implement a blocking function call in Java
谢谢。
答案 0 :(得分:2)
只需记住布尔变量
中的当前状态(睡着,清醒)public static void menu() {
int option;
boolean sleeping = false;
do{
out.println("1. Sing");
out.println("2. Eat");
out.println("3. Sleep");
out.println("4. Wake up");
out.println("6. Out");
option=Integer.parseInt(in.readLine());
sleeping = selOption(option, sleeping);
} while (option != 6);
}
public static boolean selOption (int option, boolean sleeping) {
switch (option){
case 1:
if(!sleeping) objectVariable.sing();
return sleeping;
case 2:
if(!sleeping) eat();
return sleeping;
case 3:
sleep();
return true;
case 4:
wakeUp();
return false;
default:
return sleeping;
}
}