基于控制台的命令处理:在java中将字符串映射到枚举
对于java控制台应用程序,我需要使用用户给定的参数调用一组函数。我的行动O1,O2。。O5定义为枚举,如下所示:基于控制台的命令处理:在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
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])