2016-08-12 88 views
0

我正在製作一個Android應用程序,最終將用作遊戲的骰子滾輪。我有一個鍵盤可以將等式輸入到字符串中。然後我將字符串解析成一個數組並需要計算方程。我正在使用for循環來查看數組,但我不確定如何處理乘法運算。如何繁殖2個陣列項目

作爲一個例子:

String theEquation = "2 + 3 * 6"; 
String[] result = theEquation.split("\\s+"); 

所以我現在有具有2的陣列,+,3,*,6在其中。我會如何着手回答20的答案?

我最初使用for循環來將整個數組加在一起。當它只是加法時,它工作正常。但是當我添加乘法時,事情變得很狡猾。

+0

您需要一個公式分析器。 –

+0

這是一個廣泛的話題。你需要指定你想要支持哪種類型的操作,允許哪些輸入值等等。出於好奇:你爲什麼需要骰子游戲這樣的事情? –

+0

檢查此:http://stackoverflow.com/questions/1432245/how-to-parse-a-mathematical-expression-given-as-a-string-and-return-a-number – beeb

回答

2

您可以使用javax.script.ScriptEngine

輸出

20 

看到這個代碼:

import javax.script.ScriptEngineManager; 
import javax.script.ScriptEngine; 

public class EvaluateExpr { 
    public static void main(String[] args) throws Exception{ 
    ScriptEngineManager se = new ScriptEngineManager(); 
    ScriptEngine scriptengine = se.getEngineByName("JavaScript"); 
    String theEquation = "2 + 3 * 6"; 
    System.out.println(scriptengine.eval(theEquation)); 
    } 
} 
+1

只是公然給腳本引擎提供代碼只是要求代碼注入攻擊。 –

+0

我不認爲這(StackOverflow)是正確的地方做驗證。這應該是一個不同的問題。我只是提供邏輯。 –

+0

只是指出常見的陷阱/危害 –

0

你要求執行某種解釋器的基本解釋簡單的數學符號和給出真實的結果。

如果你真的想自己開發一個基本級別的解釋器,你可以找到一個用Python編寫的非常好的示例,在here(不要擔心,python非常容易閱讀和理解)。

在鏈路

的Python代碼簡單地是這樣的:

$蟒calc1.py

計算值> 3 + 4

計算值> 3+ 5

計算值> 3 + 9

計算值>

還有用Java編寫的here另一個樣品。

無論如何,你需要的是以某種方式計算在字符串中給出的數學,所以@拉曼的答案是非常好的解決你的問題。