下面是一个使用递归实现的简单示例,展示了在Java中创建菜单的方法:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Menu {
private String name;
private List<Menu> subMenus;
public Menu(String name) {
this.name = name;
this.subMenus = new ArrayList<>();
}
public String getName() {
return name;
}
public void addSubMenu(Menu menu) {
subMenus.add(menu);
}
public List<Menu> getSubMenus() {
return subMenus;
}
public void displayMenu() {
System.out.println("== " + name + " ==");
for (int i = 0; i < subMenus.size(); i++) {
System.out.println((i + 1) + ". " + subMenus.get(i).getName());
}
System.out.println("0. 返回上级菜单");
Scanner scanner = new Scanner(System.in);
int choice = scanner.nextInt();
if (choice >= 0 && choice <= subMenus.size()) {
if (choice == 0) {
return;
} else {
subMenus.get(choice - 1).displayMenu();
}
} else {
System.out.println("无效的选择,请重新输入");
displayMenu();
}
}
public static void main(String[] args) {
Menu mainMenu = new Menu("主菜单");
Menu subMenu1 = new Menu("子菜单1");
Menu subMenu2 = new Menu("子菜单2");
Menu subSubMenu1 = new Menu("子子菜单1");
mainMenu.addSubMenu(subMenu1);
mainMenu.addSubMenu(subMenu2);
subMenu1.addSubMenu(subSubMenu1);
mainMenu.displayMenu();
}
}
在这个示例中,我们创建了一个`Menu`类来表示菜单,每个菜单有一个名称和一组子菜单(使用`LisMenu存储)。Menu类还提供了一些方法,用于添加子菜单、获取子菜单列表以及显示菜单。
在`displayMenu()`方法中,我们首先打印当前菜单的名称和子菜单列表。然后,读取用户的选择,并根据选择执行相应的操作。如果选择为0,表示返回上级菜单;否则,根据选择索引获取对应的子菜单,并递归调用子菜单的`displayMenu()`方法,以显示下一级菜单。
在`main()`方法中,我们创建了一个示例菜单结构,并调用主菜单的`displayMenu()`方法来显示菜单并接受用户输入。
您可以根据需要扩展和修改这个示例,以满足您具体的菜单需求。