阻止和取消阻止方法Java

时间:2014-01-25 17:29:21

标签: java

我有以下内容:

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

谢谢。

1 个答案:

答案 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;
        }
    }