Java 连接要计算的双精度和字符串

Java 连接要计算的双精度和字符串,java,function,arraylist,operators,Java,Function,Arraylist,Operators,我有两个数组列表 [+, / , - ] [12,8,5, 4] 我的代码: for(int i=0; i<ops.length; i++){ String op = setOps.get(i); double numer1 = Double.parseDouble(setNumbers.get(i)); double numer2 = Double.parseDouble(setNumbers.g

我有两个数组列表

[+, / , - ]
[12,8,5, 4]
我的代码:

        for(int i=0; i<ops.length; i++){
            String op = setOps.get(i);

            double numer1 = Double.parseDouble(setNumbers.get(i));
            double numer2 = Double.parseDouble(setNumbers.get(i+1));

            System.out.println(numer1+op+numer2);
        }

我可以将运算符附加到数字上,但它们不会进行计算。

这样做行不通。你需要让操作员用你自己的代码做它的事情

例如:

if(op.equals("+") ) {
    double result = numer1 + numer2;
}

System.out.println(result);

使用Java8,您可以使用nashorn

import javax.script.*;

public class Calculate {

    public static void main(String[] args) throws ScriptException {
        String command = "1 / 2";
        ScriptEngineManager scriptManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptManager.getEngineByName("nashorn");
        Object result = scriptEngine.eval(command);
        System.out.println("result " + result);
    }

}

在您的情况下(数学运算)
结果可以是
整数
双精度
。但在其他情况下可能是其他情况。

为什么要进行评估?我不认为这样,您可以在运行时动态地放置“运算符”,就像您在执行
op
时一样,并对其进行评估。
import javax.script.*;

public class Calculate {

    public static void main(String[] args) throws ScriptException {
        String command = "1 / 2";
        ScriptEngineManager scriptManager = new ScriptEngineManager();
        ScriptEngine scriptEngine = scriptManager.getEngineByName("nashorn");
        Object result = scriptEngine.eval(command);
        System.out.println("result " + result);
    }

}