java - 算术运算符作为枚举?

标签 java enums operators

我的程序提示用户选择算术运算符之一(+、-、*、/)并将其响应存储在变量 inOperator 中。在下面的 case 语句中(位于 main 方法中),我想相应地设置一个 positiveOperatonmaleOperation

switch (inOperator){
        case 1: operator = '+';
            //positiveOperation = plus
            //negativeOperation = minus
        break;

        case 2: operator = '-';
            //positiveOperation = minus
            //negativeOperation = plus
        break;

       ...
    }

我已经创建了一个枚举来初始化算术运算:

public enum Operator
{        
    plus("+") {
        @Override public double apply(double v1, double v2) {
        return v1 + v2;
        }
    },
    minus("-") {
        @Override public double apply(double v1, double v2) {
            return v1 - v2;
        }
    },

    ...

    private final String text;
    private Operator(String text) {
        this.text = text;
    }
    public abstract double apply(double x1, double x2);
    @Override public String toString() {
        return text;  
    }
}

那么回到 case 语句,如何设置 positiveOperationmaleOperation ?我可以创建另一个枚举来初始化这两个吗?

最佳答案

这可能对你有用:

public enum Operator implements BinaryOperator<Double> {
    plus("+") {
        public Double apply(Double v1, Double v2) {
            return v1 + v2;
        }
    },
    minus("-") {
        public Double apply(Double v1, Double v2) {
            return v1 - v2;
        }
    };

    private final String text;

    Operator(String text) {
        this.text = text;
    }

    public String getText() {
        return text;
    }

    public static Operator from(String str) {
        return Arrays.stream(values()).filter(o -> o.text.equals(str)).findFirst()
            .orElseThrow(IllegalArgumentException::new);
    }
}

关于java - 算术运算符作为枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103878/

相关文章:

java - 如何在 IntelliJ IDEA 中执行 Boolean To Enum 重构?

c# - 如何使用反射调用自定义运算符

php - (x && y || z) 和 (x AND y OR z) 之间的区别

不同类型的 C++ 默认赋值运算符

java - 从多个类访问和修改一个类中的ArrayList/TreeSet

java - 如何访问自定义搜索建议提供程序中的本地化字符串?

java - jackson 转换 LocalDatetime

java - 如何将两个枚举作为键和值添加到单个 Map 对象

java - CFML(ColdFusion 6)访问未记录的JAVA类TwoFishCryptor

java - 玩! JPA - 在查询中获取枚举值