- https://zhuyuangping.iteye.com/blog/1734045
- package test;
- import java.io.*;
- import javax.script.ScriptEngine;
- import javax.script.ScriptEngineManager;
- public class Test2
- {
- public static void main(String[] args) throws Exception
- {
- String expr = "x+y*10";
- ScriptEngineManager manager = new ScriptEngineManager();
- ScriptEngine engine = manager.getEngineByName("js");
- engine.put("x", 10);
- engine.put("y", 10);
- Object result = engine.eval(expr);
- System.out.println(result);
- }
- }
https://blog.csdn.net/guoqiankun01/article/details/79085525
- public class runString {
- static ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
- /**
- * @param args
- */
- public static void main(String[] args) {
- String strs = "1+1*2+(10-(2*(5-3)*(2-1))-4)+10/(5-0)";
- try {
- System.out.println(jse.eval(strs));
- } catch (Exception t) {
- }
- }
- }
注意:如果公式中存在变量作为运算的元素的话,可以借鉴使用replaceAll()方法将相应的变量替换成实际的数值。如果是多个变量可以利用循环遍历的方式来解决。
例子:jse.eval(“1+b”.replaceAll(“b”, b.toString()));