使用运算符变量进行数学运算 - Java

2 java math operators

我有两个类型的变量int(称为int1int2)和一个变量类型char(它总是保存数学运算符并称为op)。如何对这三个变量进行数学运算?我必须手动完成,由于老师的原因我无法使用 ScriptEngineManager

我不能这样做,因为它添加了变量在 ascii 表中int res = int1 + op + int2的值。op如何将这三个变量放在一起,根据变量op进行数学运算?

我发现的最简单的方法如下:

int res = 0;
if (op == '+'){res=int1+int2;}
else if (op == '-'){res = int1-int2;}
else if (op == '*'){res = int1*int2;}
else {res = int1/int2;}
Run Code Online (Sandbox Code Playgroud)

还有比这更优雅的方式吗?谢谢你!

Fra*_*ens 5

创建一个枚举,将操作字符映射到两个整数的函数。

enum Operator {
    ADD('+',(x,y)->x+y),
    SUBTRACT('-',(x,y)->x-y),
    MULTIPLY('*',(x,y)->x*y),
    DIVIDE('/',(x,y)->x/y),
    REMAINDER('%',(x,y)->x%y),
    POW('^',(x,y)->(int)Math.pow(x,y));

    char symbol;
    BiFunction<Integer,Integer,Integer> operation;

    Operator(final char symbol, final BiFunction<Integer,Integer,Integer> operation) {
        this.symbol = symbol;
        this.operation = operation;
    }

    public static Operator representedBy(final char symbol)
    {
        return Stream.of(Operator.values()).filter(operator->operator.symbol==symbol).findFirst().orElse(null);
    }

    public Integer apply(final int x,final int y)
    {
        return operation.apply(x,y);
    }
}

public static void main(final String[] args) {
    final char op = '+';
    final int int1 = 1;
    final int int2 = 2;
    final Operator operator = Operator.representedBy(op);
    if (operator == null)
    {
        // handle bad character
    }
    else
    {
        System.out.println(operator.apply(int1,int2));
    }
}
Run Code Online (Sandbox Code Playgroud)