Java的。如何评估String表达式?

时间:2015-09-05 14:47:47

标签: java

我有一个String形式的数学表达式。 String exp = "3 + 6 - 10 + 12 + 15"; 现在如何像处理其他数学表达式一样计算这个表达式的结果。 帮我。

3 个答案:

答案 0 :(得分:3)

假设可能只有+-个操作,您可以删除所有空格并将其拆分为正整数和负整数并将它们相加。

String expr = "3 + 6 - 10 + 12 + 15";
String[] nums = expr.replaceAll("\\s", "").split("\\+|(?=-)");
int result = Arrays.stream(nums).mapToInt(Integer::parseInt).sum();

如果表达式可能更复杂,包括更多运算符或括号,则必须使用其他解决方案。

答案 1 :(得分:0)

你可以使用BeanShell bsh.Interpreter:

Interpreter interpreter = new Interpreter(); 
interpreter.eval("result = 5+4*(7-15)");
System.out.println(interpreter.get("result"));

它将评估复杂的数学表达式。

答案 2 :(得分:-1)

通过JDK 1.6或更高版本。

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("JavaScript");
    String expression = "3+6-10+12+15";
    try {
        System.out.println(engine.eval(expression));
    } catch (ScriptException ex) {
        System.out.println("Error occured.");
    }