【问题标题】:Concatenating a double and string to evaluate连接双精度和字符串以进行评估
【发布时间】:2014-05-12 11:15:11
【问题描述】:

我有两个数组列表

[+, / , - ]
[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);
        }

我的输出:

12.0+8.0
8.0/5.0
5.0-4.0

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

【问题讨论】:

  • 他们为什么要评估?
  • 我不认为你可以在运行时动态放置“操作员”,就像你正在做的 op 并评估它。

标签: java function arraylist operators


【解决方案1】:

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

例子:

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

System.out.println(result);

【讨论】:

    【解决方案2】:

    使用 java 8 你可以使用 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);
        }
    
    }
    

    在您的情况下(数学运算)result 可能是 Integerdouble。但在其他情况下可能是其他情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多