要实现子菜单,可以使用递归的方式来构建菜单结构。以下是一个示例的Java终端菜单实现:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class TerminalMenu {
private static List<MenuOption> menuOptions = new ArrayList<>();
public static void main(String[] args) {
initializeMenu();
while (true) {
displayMenu();
int choice = getUserChoice();
if (choice >= 1 && choice <= menuOptions.size()) {
MenuOption selectedOption = menuOptions.get(choice - 1);
if (selectedOption.hasSubMenu()) {
handleSubMenu(selectedOption.getSubMenu());
} else {
System.out.println("You selected: " + selectedOption.getName());
// 执行选中菜单的操作
}
} else {
System.out.println("Invalid choice. Please try again.");
}
}
}
private static void initializeMenu() {
// 初始化菜单选项
MenuOption option1 = new MenuOption("Option 1");
MenuOption option2 = new MenuOption("Option 2");
MenuOption option3 = new MenuOption("Option 3");
// 添加子菜单选项
MenuOption subOption1 = new MenuOption("Sub Option 1");
MenuOption subOption2 = new MenuOption("Sub Option 2");
option3.addSubMenuOption(subOption1);
option3.addSubMenuOption(subOption2);
// 将选项添加到菜单列表
menuOptions.add(option1);
menuOptions.add(option2);
menuOptions.add(option3);
}
private static void displayMenu() {
System.out.println("Menu:");
for (int i = 0; i < menuOptions.size(); i++) {
System.out.println((i + 1) + ". " + menuOptions.get(i).getName());
}
System.out.println("Enter your choice:");
}
private static int getUserChoice() {
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
private static void handleSubMenu(List<MenuOption> subMenuOptions) {
while (true) {
displaySubMenu(subMenuOptions);
int choice = getUserChoice();
if (choice >= 1 && choice <= subMenuOptions.size()) {
MenuOption selectedOption = subMenuOptions.get(choice - 1);
if (selectedOption.hasSubMenu()) {
handleSubMenu(selectedOption.getSubMenu());
} else {
System.out.println("You selected: " + selectedOption.getName());
// 执行选中菜单的操作
}
} else {
System.out.println("Invalid choice. Please try again.");
}
}
}
private static void displaySubMenu(List<MenuOption> subMenuOptions) {
System.out.println("Sub Menu:");
for (int i = 0; i < subMenuOptions.size(); i++) {
System.out.println((i + 1) + ". " + subMenuOptions.get(i).getName());
}
System.out.println("Enter your choice:");
}
}
class MenuOption {
private String name;
private List<MenuOption> subMenuOptions;
public MenuOption(String name) {
this.name = name;
this.subMenuOptions = new ArrayList<>();
}
public String getName() {
return name;
}
public void addSubMenuOption(MenuOption subMenuOption) {
subMenuOptions.add(subMenuOption);
}
public List<MenuOption> getSubMenu() {
return subMenuOptions;
}
public boolean hasSubMenu() {
return !subMenuOptions.isEmpty();
}
}
这个示例中,我们使用了一个MenuOption
类来表示菜单选项,其中包含了选项的名称和可能的子菜单选项。TerminalMenu
类是程序的入口,它初始化菜单选项并处理用户的选择。通过递归调用handleSubMenu
方法,可以实现多级子菜单。
请注意,这只是一个简单的示例,实际的菜单实现可能需要更复杂的逻辑和功能。此外,根据具体的需求,可以使用不同的前端框架和技术来实现更丰富的用户界面。
关于Java终端菜单的应用场景,它可以用于各种命令行工具、控制台应用程序或需要在终端界面上提供交互式选择的场景。例如,系统管理工具、配置工具、命令行界面的应用程序等。
腾讯云提供了一系列云计算相关的产品和服务,包括云服务器、云数据库、云存储、人工智能等。具体推荐的产品和产品介绍链接地址可以根据实际需求和使用场景来选择,可以参考腾讯云官方文档或咨询腾讯云的技术支持团队。
领取专属 10元无门槛券
手把手带您无忧上云