Java枚举作为整数、扫描器和菜单选项



我对Java和枚举类型都是新手。

我正在尝试使一个菜单选择使用枚举类型作为其有效选项,并为用户显示以下整数选择:


欢迎来到Frank's Banking Application.

输入:
1. 创建银行
2. 向Bank添加分支机构
3.向分支添加客户
4. 与客户进行交易
5. 显示银行、分行、客户和交易。
6. 退出应用程序。

选择->


然而,我面临的问题是枚举常量似乎不接受整数值作为它们的名称。所以我现在只能给它们写字母了。这是我到目前为止的代码:
import java.util.Scanner;
enum MenuOptions
{
    z("Continue"), a("Create Bank"), b("Add Branch"), c("Add Customer"),
    d("Make Transaction"), e("Display Information"), q("Quit");
    // field
    private String meaning;
    // constructor
    MenuOptions(String meaning)
    {
        this.meaning = meaning;
    }
    // getters
    public String getMeaning()
    {
        return meaning;
    }
}

public class Main
{
    private static Scanner input = new Scanner(System.in);
    public static void main(String[] args)
    {
        System.out.println("Welcome to Frank's Banking Application.");
        MenuOptions menuOptions = MenuOptions.z;
        while (menuOptions != MenuOptions.q)
            try
            {
                menu();

                menuOptions = MenuOptions.valueOf(input.nextLine());

                switch (menuOptions)
                {
                    case a:
                        //createBank();
                        break;
                    case b:
                        //addBranch();
                        break;
                    case c:
                       // addCustomer();
                        break;
                    case d:
                       // makeTransaction();
                        break;
                    case e:
                        break;
                    case q:
                        System.out.println("Goodbye.");
                        break;
                    default:
                        System.out.println("Selection out of range. Try again");
                }
            }
            catch (IllegalArgumentException e)
            {
                System.out.println("Selection out of range. Try again:");
            }

    }
    public static void menu()
    {
        System.out.println("nEnter:");
        System.out.println("ta. Create Bank");
        System.out.println("tb. Add a branch to a Bank");
        System.out.println("tc. Add a customer to a Branch");
        System.out.println("td. Make a transaction with a customer");
        System.out.println("te. Display Banks, Branches, Customers, and Transactions.");
        System.out.println("tq. Quit Application.");
        System.out.print("nSelection -> ");
    }
}

可以看到,我必须编辑所有的枚举,使其名称为字母,以便允许来自扫描器的用户输入通过使用valueOf方法来匹配它们的类型。

但是,是否有一种方法允许用户从键盘输入的选项:1,2,3,4,5,6作为受限制的enum类型?

希望你明白,谢谢。

您可以使用例如:

MenuOptions.values()[1]

要获得第二个枚举,编号从0开始。

values()是一个包含所有给定枚举值的数组。

在你的例子中应该是:

MenuOptions.values()[Interger.parseInt(input.nextLine().trim()) - 1]

相关内容

  • 没有找到相关文章

最新更新