如何在Java中将长计算字符串分成可用计算

时间:2012-11-04 20:11:05

标签: java math calculator

  

可能重复:
  Evaluating a math expression given in string form

对于长(也有点奇怪的:))标题感到抱歉,我无法想到一个更好的标题,但是这里有。

我使用JFrame制作了一个Java计算器,JButtons就像真正的计算器那样TextArea。单击按钮时,计算将显示在TextArea中。等于'等于'按下按钮,整个计算取自36+45/22并计算。我遇到的问题是如何实际计算答案。这可能听起来有点奇怪,但是说我得到的计算是{{1}}。如何将数字写入变量然后告诉计算机对变量执行哪些操作,以及按什么顺序执行。这可以用无数个变量来完成吗?有没有办法做到这一点?谢谢你的帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用ScriptEngine

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

另一个选项是Jep

答案 1 :(得分:1)

试试这个,我使用类似的实现。工作得很好。 :-D

Evaluate expression in java

答案 2 :(得分:0)

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

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