我不熟悉Java以及枚举类型。
我正在尝试使用枚举类型作为其有效选项进行菜单选择,并为用户显示以下整数选择:
欢迎来到Frank的银行应用程序。
输入:
1.创建银行
2.在银行添加分行
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被视为限制枚举类型?
希望有意义并感谢。
答案 0 :(得分:2)
您可以使用例如:
MenuOptions.values()[1]
要获取第二个枚举,编号从0
开始。
values()
是一个包含所有枚举值的数组。
在你的情况下,它会像:
MenuOptions.values()[Interger.parseInt(input.nextLine().trim()) - 1]