簡體   English   中英

基於控制台的命令處理:將字符串映射到Java中的枚舉

[英]Console based command processing: Mapping string to enum in java

對於我的Java控制台應用程序,我需要使用用戶給定的參數調用一組函數。 我的操作O1,O2,... O5被定義為枚舉

enum Operations {O1, O2, O3, O4, O5};

我需要讀取用戶輸入args [0]並調用函數F1,F2,... F5。

例如,用戶將給出:

>java MyApp O1 5 6

為此,我想我需要將sting(args [0])映射到枚舉,以便我可以使用switch select。 這個怎么做?

Enum.valueOf(Class, String)

Operations oper = Enum.valueOf(Operations.class, args[0]);

如果沒有與args[0]匹配的枚舉值,將拋出異常

我想使用chuk lee的線索,您可以在這里提出我的出色程序。

public class Main {


public static void main(String[] args) {

    if(args.length < NUMBER_OF_OPERATORS){
         throw new IllegalArgumentException(INSUFFICIENT_OPERANDS); 
    }

    Operator operator = Enum.valueOf(Operator.class,
                                         args[OPERATION_NAME].toUpperCase());

    System.out.println(operator.operate(args[FIRST_OPERAND],
                                                   args[SECOND_OPERAND]));


}


private enum Operator {

    ADD,SUBSTRACT,MULTIPLY,DIVIDE;

    public String operate(String aString, String bString) {

        int a = Integer.valueOf(aString);
        int b = Integer.valueOf(bString);

        int out = 0;


        switch(this) {


            case ADD    : out = a + b; break;
            case SUBSTRACT  : out = a - b; break;
            case MULTIPLY   : out = a * b; break;
            case DIVIDE : out = a / b; break;
            default: throw new UnsupportedOperationException();
        }

        return String.valueOf(out);
    }

}

private static final int NUMBER_OF_OPERATORS = 3;
private static final int OPERATION_NAME = 0;
private static final int FIRST_OPERAND = 1;
private static final int SECOND_OPERAND = 2;
private static final String INSUFFICIENT_OPERANDS = 
                           "Insufficient operads to carry out the operation.";

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM