前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java使用递归实现三级菜单

java使用递归实现三级菜单

原创
作者头像
堕落飞鸟
发布2023-03-30 13:39:49
1.5K0
发布2023-03-30 13:39:49
举报
文章被收录于专栏:飞鸟的专栏

java使用递归实现三级菜单

代码语言:javascript
复制
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 方法同样循环等待用户输入三级菜单项或返回上一级。在这个示例中,三级菜单项是固定的,因此只需要打印三个选项。如果用户选择了一个有效的三级菜单项,则显示所选项的信息。

在这个示例中,使用了递归方法来实现三级菜单的显示。在 printMenuprintSubMenu 方法中,通过调用 printSubMenuprintSubSubMenu 方法来显示下一级菜单。在 printSubSubMenu 方法中,如果用户选择了返回上一级,则方法直接返回,从而返回到上一级菜单。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java使用递归实现三级菜单
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档