2012-04-05 4 views
7

私のアプリで "(45 + 9)/ 8"のような数式を扱えるようにする必要があります。私はJavaScriptを使用して評価したかっただけですが、Androidでjavax.scriptを使用することはできません。 WebViewが見つかりましたが、私はそれを使用するのに少し問題があります。ほとんどの例では、JSコードで外部ページを使用するか、「javascript:var return ... etc」を使用します。私は後者を使用する必要がありますが、私は変数を私のアプリケーションに返すことに少し問題がありました。Androidで数式を実行する

JSを評価して、その値を隠しTextViewに書き込むことはできますか?

+0

デュードは、Javascriptの必要はありません。必要なのは、数式を計算するための標準Javaだけです。 –

+0

私はユーザーが入力した方程式に使用しています。私が文字列を評価することができなければならないという意味。 – Rhyono

答えて

11

チェックアウトexp4j。これは、Java用の簡単な式評価ツールです。あなたは、あなたの質問に投稿された式について、あなただけの可能性があります:より高度な表現のための

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

あなたの答えは間違いなく私が望んでいたよりも良い解決策になるようです。 de and META-INFフォルダはどこにアンドロイドアプリを置くのですか? – Rhyono

+3

あなたがしなければならないことは、あなたの/ libsディレクトリにjarファイルを置くだけです。 –

0

興味深いオプションは、あなたの携帯電話から使用できるWebサービスへsome online calculatorをオンにすることができます。

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(""); 
    } 
} 
関連する問題