菜单结构和while循环?

时间:2017-03-13 19:02:49

标签: java for-loop while-loop menu flags

所以我的代码遇到了一些问题。也就是说,在我的菜单结构中,当有人没有输入菜单中的任何给定选项时,我有一个默认选项。所以,我希望程序循环给出的选项,直到用户输入正确的答案。但是,我不确定我是否完全理解标志等的概念,因为我在执行期间不断获得一个杀手循环。这就是问题所在:

         else
    {
        while (!choice.equals("a") || !choice.equals("b")||!choice.equals("c"))
        {
            System.out.println("It seems you have made a mistake. Please select one of the options: ");
            System.out.println("a) Create a computer-generated matrix");
            System.out.println("b) Input your own matrix");
            System.out.println("c) Quit");
            choice= kbReader.nextLine();

        }

请帮助!!

2 个答案:

答案 0 :(得分:0)

问题在于你的逻辑。

在英语中,你有:如果"不是"或者"不是b"或者"不是c"。

让我们说选择是A.这会产生一个杀手循环,因为A是"而不是B"或者"不是C"。

尝试将代码从OR更改为AND。这样,while循环需要测试该选项不是A,B或C重复。

所以你的第一行应该是:

while (!(choice.equals("a") || choice.equals("b")|| choice.equals("c"))) {

或者...

while (!choice.equals("a") && !choice.equals("b") && !choice.equals("c"))) {

希望你发现它有用!

答案 1 :(得分:0)

我认为你的循环逻辑应该是

while (!(choice.equals("a") || choice.equals("b")|| choice.equals("c"))) {
            System.out.println("It seems you have made a mistake. Please select one of the options: ");
            System.out.println("a) Create a computer-generated matrix");
            System.out.println("b) Input your own matrix");
            System.out.println("c) Quit");
            choice= kbReader.nextLine();

        }