如何以布尔格式评估“(num1 + num2)< num 3”表达式?

时间:2015-04-10 11:28:32

标签: java regex

我需要评估&#34; (num1+ num2) < num 3&#34;表达式为布尔格式 示例:

String str = "(24+3) < 4";

如果strBoolean,则必须评估上述truefalse,然后在Boolean条件中使用最终if ()值。< / p>

我不想提取单个字符,转换为int然后继续评估每个子表达式。

2 个答案:

答案 0 :(得分:3)

您可以使用javascript引擎,但我认为这样做太多了:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String str = "(24+3) < 4";
try {
    if (engine.eval(str)){
        ...
    }
} catch (ScriptException e) {
}

答案 1 :(得分:1)

还有一个BeanShell(http://www.beanshell.org/):

    final Interpreter i = new Interpreter();

    try {
        Object res = i.eval("(24 + 3) < 4");
        System.out.println("Result is " + res);
    } catch (EvalError ex) {
        System.err.println("Error while evaluating expression: " + ex.getMessage());
    }