1

可能重复:
评估以字符串形式给出的数学表达式

抱歉,标题很长(而且也有点奇怪:)),我想不出更好的标题,但这里有。

我一直在用 Java 制作一个计算器,JFrameJButtons就像一个真正的计算器一样。当您单击按钮时,计算将显示在TextArea. 当按下“等于”按钮时,整个计算都是从TextArea和计算出来的。我遇到的问题是如何实际计算答案。这听起来可能有点奇怪,但是说我得到的计算是36+45/22. 我如何将数字写入变量,然后告诉计算机要对变量执行哪些操作,以及以什么顺序执行。这可以用无限数量的变量来完成吗?有没有办法做到这一点?谢谢你的帮助。

4

3 回答 3

3

你可以使用ScriptEngine

ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");
System.out.println("result = " + engine.eval("36+45/22"));

另一种选择是Jep

于 2012-11-04T20:17:23.353 回答
1

试试这个,我使用类似的实现。效果很好。:-D

在java中评估表达式

于 2012-11-04T20:16:45.217 回答
0

如果您想自己评估表达式而不依赖外部 API(如 ScriptEngine),则必须先解析表达式。此解析为您提供了表达式的内存表示,然后您可以对其进行评估。

处理算术表达式的常用方法是递归下降解析器。这种解析器有一个很好的特性,它在解析方法中就地评估解析的表达式。可以在http://www.savarese.org/articles/1998-2006/2001-05-Recursive_Descent_Parsing/找到不依赖于计算机科学的形式语言理论的递归下降解析器的示例

于 2012-11-04T20:34:03.223 回答