gpt4 book ai didi

java - 定义简单的数学函数并评估结果

转载 作者:行者123 更新时间:2023-12-01 14:17:53 25 4
gpt4 key购买 nike

我有一个用 Java 给出的数学公式,如下所示(当然不像这个那么简单):

String equation = "x^2 + 3*y + 1";

我想从具有相同大小 n 的 x 和 y 数组生成 z 值,使得 z =equation(x,y) 也具有大小 n。例如 z = { x[0]^2 + 3 * y [0] + 1 , ..... , x[n-1]^2 + 3 * y[n-1] + 1 }。

在没有外部库的情况下,Java 中最好的方法是什么,可以帮助我评估关于任意数量变量(例如 x 和 y)的每个整数集的每个方程?

最佳答案

如果您想从头开始做所有事情,您需要拿出一个方程解析器。

从那里你可以使用枚举:

    enum Operation{ADD, SUBTRACT;

public int evaluate(int operand1, int operand2) throws IllegalOperationException {
switch(this) {
case ADD: return operand1 + operand2;
case SUBTRACT: return operand1 - operand2;
default:
break;
}
throw new IllegalOperationException();
}

public static Operation getOperator(String operator) throws IllegalOperationException{
for(Operation o: Operation.values()){
if(o.toString().equals(operator)){
return o;
}
}
throw new IllegalOperationException();
}
};

因此,使用堆栈/队列解析您的方程,然后对于每个运算符(op)基本上执行以下操作:

Operation.getOperator(op).evaluate(r1, r2);

如果您使用的是 jdk1.6 或更高版本,请将 x 和 y 替换为 x[i] 和 y[i],并将构造的字符串传递给内置 JavaScript 引擎。

ScriptEngineManager sm = new ScriptEngineManager();
ScriptEngine en = sm.getEngineByName("JavaScript");
String expression = //your expression with values;
System.out.println(engine.eval(expression));

关于java - 定义简单的数学函数并评估结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17940600/

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