gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:36:59 26 4
gpt4 key购买 nike

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

我不能执行int res = int1 + op + int2,因为它添加了变量op在ascii表中的值。如何将这三个变量放在一起,根据变量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;}

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

最佳答案

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

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));
}
}

关于java - 使用运算符变量进行数学运算 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com