javaCopy codeimport java.util.*;
public class Menu {
private static Map<String, List<String>> menu = new HashMap<>();
static {
menu.put("A", Arrays.asList("A1", "A2", "A3"));
menu.put("B", Arrays.asList("B1", "B2"));
menu.put("C", Arrays.asList("C1"));
}
public static void main(String[] args) {
printMenu();
}
private static void printMenu() {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("exit")) {
System.out.println("请选择一级菜单(输入字母 A/B/C):");
input = scanner.next().toUpperCase();
if (!menu.containsKey(input)) {
System.out.println("无效的输入,请重新输入!");
continue;
}
List<String> subMenu = menu.get(input);
printSubMenu(subMenu);
}
}
private static void printSubMenu(List<String> subMenu) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("back")) {
System.out.println("请选择二级菜单(输入数字 1/2/3)或返回上一级(输入 back):");
for (int i = 0; i < subMenu.size(); i++) {
System.out.println((i+1) + ". " + subMenu.get(i));
}
input = scanner.next();
if (!input.equals("back")) {
int index = Integer.parseInt(input) - 1;
if (index < 0 || index >= subMenu.size()) {
System.out.println("无效的输入,请重新输入!");
continue;
}
String item = subMenu.get(index);
printSubSubMenu(item);
}
}
}
private static void printSubSubMenu(String item) {
Scanner scanner = new Scanner(System.in);
String input = "";
while (!input.equals("back")) {
System.out.println("请选择三级菜单(输入数字 1/2/3)或返回上一级(输入 back):");
System.out.println("1. " + item + " 1");
System.out.println("2. " + item + " 2");
System.out.println("3. " + item + " 3");
input = scanner.next();
if (!input.equals("back")) {
int index = Integer.parseInt(input);
if (index < 1 || index > 3) {
System.out.println("无效的输入,请重新输入!");
continue;
}
System.out.println("您选择了 " + item + " " + index);
}
}
}
}
在这个示例中,首先定义了一个 menu
变量作为菜单的数据源。菜单数据使用一个 Map 存储,键为一级菜单项,值为该菜单项下的二级菜单列表。
在 main
方法中调用 printMenu
方法开始执行程序。printMenu
方法循环等待用户输入一级菜单项,如果输入无效则重新提示用户。如果输入有效,则调用 `printSubMenu方法打印该一级菜单项的二级菜单。
printSubMenu
方法与 printMenu
方法类似,不同之处在于它接受一个二级菜单列表作为参数,并且循环等待用户输入二级菜单项或返回上一级。如果用户输入无效,则重新提示用户。如果用户选择了一个有效的二级菜单项,则调用 printSubSubMenu
方法打印该二级菜单项的三级菜单。
printSubSubMenu
方法同样循环等待用户输入三级菜单项或返回上一级。在这个示例中,三级菜单项是固定的,因此只需要打印三个选项。如果用户选择了一个有效的三级菜单项,则显示所选项的信息。
在这个示例中,使用了递归方法来实现三级菜单的显示。在 printMenu
和 printSubMenu
方法中,通过调用 printSubMenu
和 printSubSubMenu
方法来显示下一级菜单。在 printSubSubMenu
方法中,如果用户选择了返回上一级,则方法直接返回,从而返回到上一级菜单。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。