假设我有


字符串String foo = "a+b"
变量abInteger a = 2 Integer b = 3


我想以某种方式分配新的整数c,应使用字符串abfoo计算得出。

评估无效,因为它只能计算具有绝对值而不是变量值的东西。

最佳答案

您可以使用JEP Java表达式解析器库(或其他表达式解析器)。

例如:

String foo = "a+b";
Jep jep = new Jep();
try {
    jep.addVariable("a", a);
    jep.addVariable("b", b);
    jep.parse(foo);
    Object result = jep.evaluate();
    System.out.println("foo = " + result);
} catch (JepException e) {
    System.out.println("An error occurred: " + e.getMessage());
}


编辑:

事实证明,JEP(这里为http://www.singularsys.com/jep/)是许可软件,因此您必须付费,但是还有另一种选择。

还有许多其他类似的库,包括JEPLite(http://jeplite.sourceforge.net/index.html),据我所知,JEPLite()似乎是免费版本,应该兼容。

09-27 21:04