2012-04-05 14 views
7

Devo essere in grado di gestire un'equazione matematica come "(45 + 9)/8" nella mia app. Volevo solo valutare utilizzando JavaScript, ma ho capito che non posso usare javax.script in Android. Quindi ho trovato WebView, ma ho qualche problema ad usarlo. La maggior parte degli esempi si riferisce all'utilizzo di una pagina esterna con il codice JS, o usando "javascript: var return ... etc." Avrei bisogno di usare quest'ultimo, ma ho avuto un po 'di problemi nel restituire la variabile alla mia app.Esecuzione dell'equazione matematica in Android

È possibile fare in modo che JS lo valuti e quindi scrivere il valore su un TextView nascosto?

+0

Amico, senza bisogno di javascript. Tutto ciò di cui hai bisogno è lo standard Java per calcolare le equazioni matematiche. –

+0

Lo sto usando per le equazioni inserite dall'utente. Significa che devo essere in grado di valutare una stringa. – Rhyono

risposta

11

Check out exp4j. È un semplice valutatore di espressioni per java. Per l'equazione in cui hai postato la tua domanda si può solo fare:

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

La tua risposta sembra decisamente una soluzione migliore di quanto avessi sperato. Dove inserisco le cartelle de e META-INF nell'app per android? – Rhyono

+3

Tutto ciò che devi fare è mettere il jar nella directory/libs. –

0

un'opzione interessante per l'espressione più avanzata potrebbe essere quella di trasformare some online calculator in un webservice che è possibile utilizzare dal tuo cellulare.

1

provare questo:

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