使用枚举实现switch中使用String作为条件
以根据字符串类型的 + - * /作为判断条件 , 实现简单计算器为例子。
枚举类:
public enum OperationEnum {
A("+"), B("-"), C("*"), D("/");
private String operate;
private OperationEnum(String operate) {
this.operate = operate;
}
private String getOperate() {
return operate;
}
public static OperationEnum val(String operate) {
for(OperationEnum s : values()) { //values()方法返回enum实例的数组
if(operate.equals(s.getOperate()))
return s;
}
return null;
}
}
业务实现:
public class Operation {
public static double getResult(double numberA, double numberB, String operation) {
double result = 0d;
OperationEnum operationEnum = OperationEnum.val(operation);
switch (operationEnum) {
case A:
result = numberA + numberB;
break;
case B:
result = numberA - numberB;
break;
case C:
result = numberA * numberB;
break;
case D:
result = numberA / numberB;
break;
}
return result;
}
}
可以用下面的主方法测试:
public class Calculation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入数字A:");
String numberA = scanner.nextLine();
System.out.println("请输入数字B:");
String numberB = scanner.nextLine();
System.out.println("请输入操作符:");
String operate = scanner.nextLine();
double result = getResult(Double.valueOf(numberA), Double.valueOf(numberB), operate);
System.out.println(result);
} catch (Exception e) {
System.out.println("您的输入有误: " + e.getMessage());
}
}
}