【发布时间】:2016-10-27 18:08:49
【问题描述】:
我不熟悉 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 视为受限枚举类型?
希望这是有道理的,谢谢。
【问题讨论】:
标签: java enums int java.util.scanner