为用户创建一个控制台菜单以供选择。

4

使用Java在Eclipse中编写程序。我想做的是当我执行程序时,我想向用户提供选择。我已经完成了所有的计算等工作,只是不确定如何制作这个菜单以提供用户选择。以下是我要寻找的示例:

To enter an original number: Press 1
To encrypt a number: Press 2
To decrypt a number: Press 3
To quit: Press 4
Enter choice:


public static void main(String[] args) {
    Data data = new Data(); 
    data.menu(); }
}
2个回答

10

出于简单起见,我建议使用返回选项整数值的静态方法。

    public static int menu() {

        int selection;
        Scanner input = new Scanner(System.in);

        /***************************************************/

        System.out.println("Choose from these choices");
        System.out.println("-------------------------\n");
        System.out.println("1 - Enter an original number");
        System.out.println("2 - Encrypt a number");
        System.out.println("3 - Decrypt a number");
        System.out.println("4 - Quit");

        selection = input.nextInt();
        return selection;    
    }

完成方法后,您将在主方法中按如下方式显示:

    public static void main(String[] args) {

        int userChoice;

        /*********************************************************/

        userChoice = menu();

        //from here you can either use a switch statement on the userchoice 
        //or you use a while loop (while userChoice != the fourth selection)
        //using if/else statements to do your actually functions for your choices.
    }

希望这可以帮到你。


1
我看不出将逻辑导出到单独的静态方法中的理由,事实上,在主方法中创建一个新的Scanner实例已经过时了。 - Udo Klimaschewski

4
您可以使用扫描仪从 System.in 读取输入,如下所示:
public static void main(String[] args) {
    Data data = new Data();
    data.menu();

    Scanner scanner = new Scanner(System.in);
    int choice = scanner.nextInt();

    switch (choice) {
        case 1:
            // Perform "original number" case.
            break;
        case 2:
            // Perform "encrypt number" case.
            break;
        case 3:
            // Perform "decrypt number" case.
            break;
        case 4:
            // Perform "quit" case.
            break;
        default:
            // The user input an unexpected choice.
    }
}

请注意,这将需要用户输入一个数字并按下回车键,然后才能继续执行。如果他们输入无效的内容,程序将停止;如果你想要再次提示用户,你需要将其包装在某种类型的循环中,具体取决于你希望系统如何运行。
如果用户输入的内容不能被解析为整数,则Scanner#nextInt可能会抛出异常。您可以捕获此异常并适当处理它。如果用户输入的整数超出有效选项的范围(即不在1-4的范围内),它将落入switch语句的default分支中,您可以再次根据需要处理错误情况。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接