这是目前的菜单。我想创建子菜单来运送和订购。 我真的不知道如何做到这一点。当我选择船舶选项时,我想要另一个菜单来显示不同的船舶,其中具体有 10 艘。
最好的方法是什么?
提前致谢!
import java.util.Scanner;
public class Main {
boolean exit;
public static void main(String[] args) {
Main main = new Main();
main.runMenu();
}
public void runMenu() {
printHeader();
while(!exit) {
printMenu();
int choice = getInput();
performAction(choice);
}
}
private void printHeader() {
System.out.println("+-----------------------------------+");
System.out.println("| Welcome operator! |");
System.out.println("+-----------------------------------+");
}
private void printMenu() {
System.out.println("\nMake your selection");
System.out.println("1) Ship");
System.out.println("2) Order");
System.out.println("3) Map");
System.out.println("4) Status");
System.out.println("0) Exit");
}
private int getInput() {
Scanner kb = new Scanner(System.in);
int choice = -1;
while(choice < 0 || choice > 4) {
try {
System.out.print("\nEnter your choice");
choice = Integer.parseInt(kb.nextLine());
}
catch (NumberFormatException e) {
System.out.println("Invalid selection. Please try again");
}
}
return choice;
}
这里我想调用子菜单:
private void performAction(int choice) {
switch(choice) {
case 0:
exit = true;
System.out.println("Thank your for using our simulator");
break;
case 1:
shipMenu();
break;
case 2:
orderMenu();
break;
case 3:
//map();
case 4:
//status();
default:
System.out.println("Unknown error has occured");
}
}
最佳答案
请告诉我这是否不是您想要的。
用户做出选择后,您可以使用清除控制台
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
然后打印出下一个子菜单。
例如(此方法可能会变得非常冗长,但它适用于简单的文本菜单):
public static void main(String[] args) {
while (true) {
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
System.out.println("1. Food");
System.out.println("2. Drink");
System.out.println("3. Quit");
//get user input
if (userInput == 1) { //food submenu (submenus can be easily put in functions)
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
System.out.println("1. Apple");
System.out.println("2. Banana");
System.out.println("3. Back");
//get and process input
} else if (userInput == 2) { //drink submenu (submenus can be easily put in functions)
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
System.out.println("1. Water");
System.out.println("2. Juice");
System.out.println("3. Back");
//get and process input
} else break;
}
}
关于java - 我如何继续实现子菜单? Java 终端菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59868699/