2015-04-04 51 views
2

如何在控制檯中插入三角函數以進一步處理它?例如,sin(x)= 2x + 3log(y)或類似的東西。我想..我需要輸入一個表達式作爲字符串,然後它被處理爲。但是如何?在Java中評估三角函數表達式

+0

你有搜索的網站或在谷歌上花了一段時間尋找已經這樣做的API? – CKing 2015-04-04 12:09:50

+0

是的,我在找。我無法弄清楚如何制定我的要求。 – Mike 2015-04-04 12:11:20

+0

你可以將它作爲中綴表達式輸入,並從那裏解析出來,然後處理計算。 – Tdorno 2015-04-04 12:11:57

回答

3

看看exp4j

我們已經在我們的項目的一個廣泛使用這個庫解決你所面臨的相同問題。

Expression e = new ExpressionBuilder("3 * sin(y) - 2/(x - 2)") 
       .variables("x", "y") 
       .build() 
       .setVariable("x", 2.3) 
       .setVariable("y", 3.14); 
     double result = e.evaluate(); 

你的具體情況,您可以要求用戶在控制檯下面輸入,並使用這些輸入構建表達:

  1. 輸入要計算的表達式。這將成爲ExpressionBuilder構造函數的參數。
  2. 輸入代表表達式中變量的字符串。這將成爲變量方法的輸入。您可以將這些字符串作爲鍵添加到可用於下一步的Map中。
  3. 輸入每個變量的值。這將成爲setVariable方法的輸入。您可以收集所有變量值作爲上述步驟中創建的地圖中的值。你可以在地圖上迭代並調用setVariable(key,value),這樣你就不需要事先知道表達式中有多少變量。
+0

看起來不錯,但是在哪裏可以看到安裝軟件包的說明? – Mike 2015-04-04 12:33:31

+0

@Mike您是否嘗試在谷歌搜索exp4j?只要您訪問彈出的第一個鏈接,就會找到一個鏈接來下載jar。您可以將此jar添加爲項目依賴項。如果你不知道如何在java程序/項目中使用外部jar,請在stackoverflow上發佈一個新的問題。我相信我已經回答了你的直接問題。 – CKing 2015-04-04 12:36:33

+0

明白謝謝你 – Mike 2015-04-04 12:44:21

1

嘗試exp4j。實施例(來自鏈路):

Expression e = new ExpressionBuilder("3 * sin(y) - 2/(x - 2)") 
     .variables("x", "y") 
     .build() 
     .setVariable("x", 2.3) 
     .setVariable("y", 3.14); 
double result = e.evaluate(); 

另一種選擇是Javaluator。例如查看鏈接。

而且有EvalX。看下面的例子(來自鏈接):

Expression expression = new Expression("1+1/3"); 
result = expression.eval(): 
expression.setPrecision(2); 
result = expression.eval(): 

我希望這有助於!