【发布时间】:2011-01-13 15:46:22
【问题描述】:
我需要一个库来解析方程并给出输入的结果。
例如这样的:
String equation = "x + y + z";
Map<String, Integer> vars = new HashMap<String, Integer>();
vars.add("x", 2);
vars.add("y", 1),
vars.add("z", 3);
EquationSolver solver = new EquationSolver(equation, vars);
int result = solver.getResult();
System.out.println("result: " + result);
并计算为: 6
是否有任何类型的 java 库可以为我做到这一点?
谢谢
【问题讨论】:
-
我不认为有一个预先编写好的库,虽然老实说我不认为你自己写真的那么难......
-
您要执行哪些数学函数? Java 可以评估
2+1+3。因此,除非您尝试进行高级数学运算,否则它实际上只是一些字符串操作,然后让 java 评估等式。除非我误解了你的问题。 -
@Dartoxian - 编写一个处理多种简单格式以外的任何东西的方程解析器实际上非常困难
-
我试图在我的应用程序中定义一些公式,以便通过一些外部属性动态更改它。例如,也许今天我的公式只是“x + y + z”,但有人可能想将其更改为“x ^ 2 * y / z”。
-
其实并不难。您转换为后缀表示法,然后使用堆栈进行计算。我记得必须将其作为学习 lex/yacc 的家庭作业。