我需要实现函数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)
| 归档时间: |
|
| 查看次数: |
16624 次 |
| 最近记录: |