2012-04-05 15 views
7

Necesito poder manejar una ecuación matemática como "(45 + 9)/8" en mi aplicación. Solo quería evaluarlo usando JavaScript, pero me di cuenta de que no puedo usar javax.script en Android. Entonces, encontré WebView, pero estoy teniendo problemas para usarlo. La mayoría de los ejemplos se refieren al uso de una página externa con el código JS, o al usar "javascript: var return ... etc." Tendría que usar este último, pero he estado teniendo problemas para devolver la variable a mi aplicación.Ejecución de la ecuación matemática en Android

¿Es posible que JS lo evalúe y luego escriba el valor en un TextView oculto?

+0

Amigo, no hay necesidad de Javascript. Todo lo que necesitas es el Java estándar para calcular ecuaciones matemáticas. –

+0

Lo estoy usando para ecuaciones ingresadas por el usuario. Lo que significa que tengo que poder evaluar una cadena. – Rhyono

Respuesta

11

Echa un vistazo exp4j. Es un simple evaluador de expresiones para java. De la ecuación que ha escrito en su pregunta usted podría hacer:

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

Su respuesta definitivamente parece que será una solución mejor de lo que esperaba. ¿Dónde coloco las carpetas de y META-INF en la aplicación de Android? – Rhyono

+3

Todo lo que tiene que hacer es poner el contenedor en su directorio/libs. –

0

opción interesante para la expresión más avanzada podría ser convertir some online calculator en un servicio web que puede utilizar desde el móvil.

1

prueba este:

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