Java字符串到数学方程

Joh*_*Dow 5 java

我需要实现函数public int eval(String infix) {...} ,当我像这样使用它时:

eval("3+2*(4+5)") 
Run Code Online (Sandbox Code Playgroud)

我必须得到21.

算术表达式可以包含'+','*'和括号.

那么,我怎样才能将其转换为数学方程?我不能使用非标准的库.

更新:找到解决方案.

它是2种方式:波兰表示法和使用ScriptEngine.


xag*_*gyg 11

信不信由你,使用JDK1.6,你可以使用内置的Javascript引擎.定制以满足您的需求.

确保你有这些进口......

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
Run Code Online (Sandbox Code Playgroud)

码:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String infix = "3+2*(4+5)";
System.out.println(engine.eval(infix));
Run Code Online (Sandbox Code Playgroud)