2014-04-01 176 views
0

我有兩個的ArrayList串聯雙和字符串評估

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

我能夠給運營商連接到數字,但他們不會評估。

+0

他們爲什麼要評估? –

+0

我不這麼認爲,你可以在運行時動態地放置「運算符」,就像你在做「op」並評估它一樣。 –

回答

1

它不會那樣工作。你需要讓操作員用你自己的代碼來完成它的工作。

例子:

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

System.out.println(result); 
1

與Java 8,您可以使用犀牛

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。但在其他情況下可能是其他情況。