2012-04-05 15 views
7

Potrzebuję być w stanie obsłużyć równanie matematyczne, takie jak "(45 + 9)/8" w mojej aplikacji. Chciałem po prostu sprawdzić to za pomocą JavaScript, ale zdałem sobie sprawę, że nie mogę używać javax.script w systemie Android. Tak więc znalazłem WebView, ale mam problem z jego użyciem. Większość przykładów odnosi się do używania zewnętrznej strony z kodem JS lub użycia "javascript: var return ... etc." Będę musiał użyć tego ostatniego, ale mam problem z zwrócenie zmiennej do mojej aplikacji.Wykonywanie równania matematycznego w Androidzie

Czy możliwe jest posiadanie JS eval it, a następnie zapisanie wartości do ukrytego TextView?

+0

Dude, nie ma potrzeby javascript. Wszystko czego potrzebujesz to standardowa Java do obliczania równań matematycznych. –

+0

Używam go dla wprowadzonych przez użytkownika równań. Oznacza to, że muszę być w stanie oszacować ciąg znaków. – Rhyono

Odpowiedz

11

Zapoznaj się z exp4j. To prosty ewaluator wyrażeń dla java. Dla równania pan pisał w swoim pytaniu można po prostu zrobić:

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

Twoja odpowiedź zdecydowanie wygląda na to, że będzie to lepsze rozwiązanie, niż oczekiwałem. Gdzie umieszczam foldery de i META-INF w aplikacji na Androida? – Rhyono

+3

Wszystko, co musisz zrobić, to po prostu umieścić słoik w katalogu/libs. –

0

Ciekawa opcja dla bardziej zaawansowanych ekspresji może być, aby włączyć some online calculator się usługa, które można wykorzystać z telefonu komórkowego.

1

Spróbuj tego:

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(""); 
    } 
} 
Powiązane problemy