基于控制台的命令处理:在java中将字符串映射到枚举

基于控制台的命令处理:在java中将字符串映射到枚举,java,Java,对于java控制台应用程序,我需要使用用户给定的参数调用一组函数。我的行动O1,O2。。O5定义为枚举,如下所示: enum Operations {O1, O2, O3, O4, O5}; 我需要读取用户输入参数[0]并调用函数F1、F2、…F5 例如,用户将给出: >java MyApp O1 5 6 为此,我想我需要将sting(args[0])映射到一个枚举,以便使用switch select。怎么做? 范例 Operations oper = Enum.valueOf(Ope

对于java控制台应用程序,我需要使用用户给定的参数调用一组函数。我的行动O1,O2。。O5定义为枚举,如下所示:

enum Operations {O1, O2, O3, O4, O5};
我需要读取用户输入参数[0]并调用函数F1、F2、…F5

例如,用户将给出:

>java MyApp O1 5 6
为此,我想我需要将sting(args[0])映射到一个枚举,以便使用switch select。怎么做?

范例

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

如果没有匹配
args[0]

的枚举值,则将引发异常。我想使用chuk lee的线索,您可以找到pritty cool程序 这就是我所做的

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.";
公共类主{
公共静态void main(字符串[]args){
if(args.length<运算符的个数){
抛出新的IllegalArgumentException(操作数不足);
}
运算符Operator=Enum.valueOf(Operator.class,
args[OPERATION_NAME].toUpperCase();
System.out.println(运算符.operate(args[第一个操作数],
args[第二个操作数];
}
私有枚举运算符{
加、减、乘、除;
公共字符串操作(字符串搜索、字符串搜索){
int a=整数值(aString);
int b=整数.valueOf(bString);
int out=0;
开关(本){
案例添加:out=a+b;中断;
案例减记:out=a-b;break;
大小写倍增:out=a*b;break;
案例划分:out=a/b;break;
默认值:抛出新的UnsupportedOperationException();
}
返回字符串.valueOf(out);
}
}
私有静态最终整数运算符的整数=3;
私有静态最终整数运算\u NAME=0;
私有静态final int FIRST_操作数=1;
私有静态final int SECOND_操作数=2;
私有静态最终字符串不足\u操作数=
“没有足够的操作来执行该操作。”;

}

为什么不
Operations oper=Operations.valueOf(args[0])