如何将一个数学字符串计算运算并得出结果,例如字符串"3*(5+2)+(2*6)"需要运算出结果。
或者a+b*c这样的格式,已知a=x1,b=x2,c=x3运算出结果。
方法一
@Test
public void test() {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try {
String str = "0.1+0.2";
System.out.println(str + "=" + engine.eval(str));
String str2 = "1+2";
System.out.println(str2 + "=" + engine.eval(str2));
} catch (ScriptException ex) {
ex.printStackTrace();
}
}
(存在小数精度丢失):利用Java内置的javascript引擎来运行字符串得出结果
方法二
(正确的方法)自定义运算器,利用栈处理运算