2012-04-05 106 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(""); 
    } 
}