2016-06-25 23 views
1

私はJavaとenum型を初めて使用しています。整数、スキャナ、およびメニューオプションとしてのJavaの列挙型

私はその有効な選択肢として列挙型を使用し、それがユーザーのために、次の整数の選択を表示するメニュー選択しようとしています:フランクの銀行業務アプリケーションに


ようこそ。

は、入力します。
1.支店
4に顧客を追加銀行
3への分岐を追加銀行
2を作成し、顧客との取引
5.ディスプレイの銀行を作り、支店、得意先、および取引。
6.アプリケーションを終了します。

選択 - >


しかし、私が直面しています問題は、enum定数は、その名前と整数値を受け入れていないようだということです。だから私は今のところ手紙を書こうとしている。これは私がこれまで持っているコードです:

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 -> "); 

    } 
} 

わかるように、私が使用して自分のタイプに合わせて、スキャナからのユーザ入力を可能にするために自分の名前などの文字を持っているすべてのenumを編集する必要がありましたvalueOfメソッド

ただし、キーボードからのユーザー入力から1,2,3,4,5,6というオプションを制限付き列挙型として使用する方法はありますか?

希望と感謝します。

答えて

2

あなたは、例えばを使用することができます。:

MenuOptions.values()[1] 

0で始まる番号付け、列挙型を取得するには。

values()は、すべての指定された列挙値の配列です。あなたのケースでは

それは次のように次のようになります。ありがとうござい

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

。魅力のように動作します。それはArrayIndexOutOfBoundsExceptionをスローしますが、私は他のものと一緒にそれを捕まえました。 –

+0

@FrankMeanaユーザーが指定した番号が配列のサイズを超えていないことを確認すると、よりクリーンになります。 –

関連する問題