在 Java 控制台中创建两级深度选择菜单的最佳实践

Best practice to create two-level deep selection menu in Java console

我将要创建一个应用程序,该应用程序在 java 控制台而不是 GUI 上运行,我有一个关于使用另一级子菜单显示菜单的最佳方法的问题。我快速输入了以下代码,让您大致了解我要实现的目标。

我的目标是让修改帐户和访问帐户的菜单都打开带有更多选择的子菜单。本质上,我正在尝试使应用程序变得杂乱无章,以免有太多选择(例如,更改帐户 ID、更改帐户余额、更改帐户昵称等)。

我在互联网上看到一些地方似乎不喜欢这种类型的 "tree-like" 结构。有没有什么干净的方法可以做这样的事情,或者我会被迫做一些事情,比如创建单独的方法(即 AccountMenu),它会显示不同的提示,并实质上创建另一个 do while 循环。

 public class Console
 {
public static void main (String[] args) {

System.out.println("Welcome to the console application");

int selection =0;

do
{
    System.out.println("[1] Create New Account");
    System.out.println("[2] Modify Account");
    System.out.println("[3] Access Account");
    System.out.println("[4] Quit"); 

    System.out.print("Insert selection: "); 
    selection = ReadConsole.nextInt();

    switch (selection)
    {
        case 1: dothislater; break;
        case 2: dothislater; break;
        case 3: dothislater; break;
        case 4: System.out.println("Application has been shut down") 
        break;
        default:
        System.out.println("The selection was invaild!");
    }
}while (selection != 4);
}

}

我是 java 的新手,我这样做只是为了了解它的真实情况。建议/想法?我还应该提到,我不想实现像 swing 元素这样的 "proper" GUI。

您可以为每个(子)菜单创建另一个功能。 之所以不喜欢它,是因为它不符合 OOP 的精神。

public class Console {

    private int testint = 1;
    /**
     * @param args
     */
    public static void main(String[] args) {
        Console console = new Console();
        console = console.mainMenu(console);
        System.out.println("Application has been shut down");
    }

    private Console mainMenu(Console console) {
        System.out.println("Welcome to the console application");

        int selection = 0;

        do {
            System.out.println("[1] Create New Account");
            System.out.println("[2] Modify Account");
            System.out.println("[3] Access Account");
            System.out.println("[4] Quit");

            System.out.print("Insert selection: ");
            // selection = testint++;
            selection = ReadConsole.nextInt();
            switch (selection) {
            case 1: return console.submenu1(console);
            case 2: return console.submenu1(console);
            case 3: return console.submenu1(console);
            case 4: return console;
            default:
                System.out.println("The selection was invalid!");
            }
        } while (selection != 4);
        return console;
    }

    private Console submenu1(Console console) {
        System.out.println("Welcome to the SUBMENU");

        int selection = 0;

        do {
            System.out.println("[1] SUBMENU_1");
            System.out.println("[2] SUBMENU_2");
            System.out.println("[3] SUBMENU_3");
            System.out.println("[4] Return");

            System.out.print("Insert selection: ");
            //selection = ++testint;
            selection = ReadConsole.nextInt();

            switch (selection) {
            case 1: return console.submenu1(console);
            case 2: return console.submenu1(console);
            case 3: return console.submenu1(console);
            case 4: return console.mainMenu(console);
            default:
                System.out.println("The selection was invalid!");
            }
        } while (selection != 4);
        return console;
    }
}

可能需要多做一些调整,但您可能明白了