2012-04-05 109 views
7

我需要能夠在我的應用程序中處理數學公式,例如「(45 + 9)/ 8」。我只想用JavaScript評估它,但意識到我不能在Android中使用javax.script。所以,我找到了WebView,但使用它有點麻煩。大多數示例都指向使用JS代碼的外部頁面,或者使用「javascript:var return ...等」。我需要使用後者,但是將變量返回給我的應用程序時遇到了一些麻煩。在Android中執行數學公式

是否有可能讓JS評估它,然後將值寫入隱藏的TextView?

+0

哥們,沒有必要的JavaScript。所有你需要的是標準的Java來計算數學方程。 – 2012-04-05 04:59:36

+0

我將它用於用戶輸入的方程式。這意味着我必須能夠評估一個字符串。 – Rhyono 2012-04-05 22:03:58

回答

11

結賬exp4j。這是一個簡單的java表達式評估器。因爲你在你的問題張貼公式,你可以只是做:

Calculable calc = new ExpressionBuilder("(45+9)/8").build() 
double result1=calc.calculate(); 
+0

你的答案絕對看起來像是比我所希望的更好的解決方案。我在哪裏可以在android應用程序中放置de和META-INF文件夾? – Rhyono 2012-04-05 22:40:50

+3

您只需將jar放入您的/ libs目錄即可。 – 2012-04-06 16:29:48

1

試試這個:

import javax.script.ScriptEngine; 
import javax.script.ScriptEngineManager; 
import javax.swing.JOptionPane; 

private void btnEqualsActionPerformed(java.awt.event.ActionEvent evt) { 
    String expression = txtResult.getText(); 
    ScriptEngineManager mgr = new ScriptEngineManager(); 
    ScriptEngine engine = mgr.getEngineByName("JavaScript"); 
    try { 
     result = engine.eval(expression).toString(); 
     txtResult.setText(result); 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, txtResult.getText() + " cannot be calculated. Try again!", "Error on calculation!", JOptionPane.WARNING_MESSAGE); 
     txtResult.setText(""); 
    } 
}