2012-04-05 33 views
7

Uygulamamda "(45 + 9)/8" gibi bir matematik denklemini kullanabilmem gerekir. Sadece JavaScript kullanarak değerlendirmek istedim, ancak Android'de javax.script kullanamayacağımı fark ettim. Bu yüzden WebView'i buldum, ancak bunu kullanırken biraz sorun yaşıyorum. Örneklerin çoğu, JS koduyla harici bir sayfa kullanmak veya "javascript: var return ... etc" ifadesini kullanmakla ilgilidir. İkincisini kullanmam gerekiyordu, ancak değişkeni uygulamamla döndürme konusunda biraz sorun yaşıyorum.Android'de matematik denklemini çalıştırma

JS'yi değerlendirmek ve sonra değeri gizli bir TextView'e yazmak mümkün mü?

+0

Dude, javascript gerek. Tek ihtiyacınız olan matematik denklemlerini hesaplamak için standart Java. –

+0

Kullanıcı girilen denklemler için kullanıyorum. Bir dize değerlendirme yapabilmem gerektiği anlamına geliyor. – Rhyono

cevap

11

exp4j'a bakın. Java için basit bir ifade değerlendiricisi. Sorunuza gönderilmiş denklemin için yapmanız sadece olabilir: daha gelişmiş ifadesi için

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

Cevabınız kesinlikle umduğumdan daha iyi bir çözüm olacak gibi görünüyor. Android uygulamasında de ve META-INF klasörlerini nereye koyacağım? – Rhyono

+3

Tek yapmanız gereken, jar'ı/libs dizinine koymak. –

1

bu bir deneyin:

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(""); 
    } 
}