Java语言怎么用一个类定义一个带有功能层次的层次的菜单的代码的实现的过程是什么思路的呢?是不是和函数嵌套的原理类似
3条回答 默认 最新
关注在Java语言中,可以通过类来定义带有功能层次的菜单。这种实现方式和函数嵌套有一定的相似之处,但是更加灵活和面向对象。
import java.util.Scanner; public class MenuExample { public static void main(String[] args) { Menu menu = new Menu(); // 创建菜单对象 menu.addMenuItem("1. 函数A", () -> { System.out.println("执行函数A"); }); menu.addMenuItem("2. 函数B", () -> { System.out.println("执行函数B"); }); Menu subMenu = new Menu(); subMenu.addMenuItem("3.1. 函数C", () -> { System.out.println("执行函数C"); }); subMenu.addMenuItem("3.2. 函数D", () -> { System.out.println("执行函数D"); }); menu.addSubMenu("3. 函数C和函数D", subMenu); menu.addMenuItem("4. 退出", () -> { System.out.println("感谢使用,再见!"); menu.exit(); // 菜单退出 }); menu.display(); } } // 菜单类 class Menu { private List<MenuItem> menuItems; // 菜单项列表 public Menu() { menuItems = new ArrayList<>(); } // 添加菜单项 public void addMenuItem(String label, Runnable action) { MenuItem menuItem = new MenuItem(label, action); menuItems.add(menuItem); } // 添加子菜单 public void addSubMenu(String label, Menu subMenu) { SubMenu menuItem = new SubMenu(label, subMenu); menuItems.add(menuItem); } // 显示菜单 public void display() { Scanner scanner = new Scanner(System.in); int choice = 0; while (choice != menuItems.size()) { System.out.println("菜单"); for (int i = 0; i < menuItems.size(); i++) { System.out.println(menuItems.get(i).getLabel()); } System.out.print("请输入您的选择:"); choice = scanner.nextInt(); if (choice > 0 && choice <= menuItems.size()) { menuItems.get(choice - 1).execute(); } else { System.out.println("无效的选择,请重新输入!"); } } scanner.close(); } // 菜单退出 public void exit() { System.exit(0); } } // 菜单项类 class MenuItem { private String label; // 菜单项显示的标签 private Runnable action; // 菜单项对应的动作 public MenuItem(String label, Runnable action) { this.label = label; this.action = action; } // 执行菜单项的动作 public void execute() { action.run(); } public String getLabel() { return label; } } // 子菜单类,继承自菜单项类 class SubMenu extends MenuItem { private Menu subMenu; // 子菜单对象 public SubMenu(String label, Menu subMenu) { super(label, null); // 子菜单项的动作为null this.subMenu = subMenu; } // 执行子菜单的显示和操作 @Override public void execute() { subMenu.display(); } }代码使用了
Menu类来表示菜单,MenuItem类表示菜单项。菜单项可以是普通的功能项(MenuItem),也可以是包含子菜单的项(SubMenu)。每个菜单项都有对应的标签和执行动作(使用Runnable)。通过在主函数中创建菜单对象并添加菜单项,然后调用
display()方法来显示菜单。用户可以根据菜单的提示进行选择,并执行相应的动作。当菜单项是子菜单时,在执行子菜单的动作时会进入子菜单的循环显示和操作,从而实现了功能层次的菜单。
可以这么说使用类来定义带有功能层次的菜单可以更好地组织和管理菜单的结构和逻辑,实现灵活、可扩展的菜单功能。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报