然而,我面临的问题是枚举常量似乎不接受整数值作为它们的名称。所以我现在只能给它们写字母了。这是我到目前为止的代码:
我对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]