当前位置: 首页 > 知识库问答 >
问题:

如何在切换情况下执行方法后返回主菜单?

尹承泽
2023-03-14

在选定的方法执行后,如何使菜单再次显示?

我有菜单选项打印到控制台。然后接受用户输入(1-6),调用相应的方法,然后返回菜单,供用户再次从菜单中选择。

选择的方法执行后,程序刚好结束。

public static void main (String[] arg) {

    Scanner kbd = new Scanner(System.in);

    String mainMenu = ("Select a choice from the menu: \n" 
            + "1. Add new DVD entry\n" 
            + "2. Look Up DVD Entry\n"
            + "3. Display DVDs By Category\n" 
            + "4. Remove DVD Entry\n"
            + "5. Save Data\n" 
            + "6. Exit");

    System.out.println(mainMenu);

    menuChoice = kbd.nextInt();

    while (menuChoice < 1 || menuChoice > 6) {
        System.out.print("\nError! Incorrect choice.\n");
        System.out.println(mainMenu);
        menuChoice = kbd.nextInt();
    }

    switch (menuChoice) {
    case 1: {
        // method code
        }
        else {
            // method code
            return;
        }
    }

    case 2: {
        // method code
        return;
    }

    case 3: {
        // method code
        return;
    }

    case 4: {
        // method code
        return;
    }   

    case 5: {
        // method code
        return;
    }

    case 6: {
        // method code
        System.exit(0);
        return;
    }
    }
}

共有1个答案

祁增
2023-03-14

使用do while

do
{
    System.out.println(mainMenu);

    menuChoice = kbd.nextInt();

   ... switch/case ...
   ... remove the return statements from your cases.

} while (menuChoice != 6);

您还必须从大小写中删除返回。否则它将返回main之外。将它们替换为break

这就是switch案例需要的方式

switch (menuChoice) 
{
    case 1: 
        Do what you want. 
        break;
    case 2:
        ...
        break;
    default:
        ...
        break;
}

您通常不需要{if在开关用例中。

 类似资料:
  • 我想为android构建一个计算器应用程序,为此我需要一个解析器来转换要求解的字符串表达式。现在Java和Kotlin不支持eval函数,仅仅为了一个操作而导入javascript引擎可能会让我面临各种漏洞。所以我做了自己的计算器解析器。现在它工作得很好,除了crash中的负数外,所有算术运算都工作得很好。我确实知道问题是什么,因为我使用数学符号分隔字符串,但我不能在负值中执行任何操作。 输入:-

  • 问题内容: 有人建议可以怎一个JAVA程序运行不写一个主要方法.. 例如: 不使用类中的公共静态void main(String arg []),如何在控制台上打印以上行。 问题答案: 直到JDK6,您都可以使用静态初始化程序块来打印消息。这样,一旦您的班级被加载,消息就会被打印出来。然后,技巧就变成了使用另一个程序来加载您的类。 当然,您可以按如下方式运行程序,您将看到消息;但是,该命令也会失败

  • 问题内容: 我想知道像Karel这样的程序可以运行机器人,因为它没有使用main()方法。相反,它使用run()方法: 它是如何工作的? 问题答案: 实际的主要方法在其他地方。例如,在KarelRunner类中。当Java执行程序时,它实际上是在运行程序类中执行main方法。从该运行程序代码中调用您自己的run方法。

  • 我正在调用一个外部服务来获取,如果该服务不工作,我所需要的只是用填充值

  • 问题内容: 很抱歉那个愚蠢的问题。如何在javascript切换大小写语言元素中为案件使用条件?像下面的示例一样,当变量<= 5和> 0 时,大小写应该匹配;但是,我的代码不起作用: 感谢您的任何建议! 问题答案: 这有效: 此答案的先前版本认为括号是罪魁祸首。实际上,括号在这里是无关紧要的-唯一必要的是您的case表达式必须为布尔值。 之所以起作用,是因为我们将给开关的值用作比较的依据。因此,同