Foros del Web » Programación para mayores de 30 ;) » Java »

interpretar String como si fuera formula

Estas en el tema de interpretar String como si fuera formula en el foro de Java en Foros del Web. Hola a todos, buenas mi problema es el siguiente: Tengo una pagina web en donde tengo un textarea al cual por medio de unos botones ...
  #1 (permalink)  
Antiguo 15/05/2010, 10:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 62
Antigüedad: 14 años, 7 meses
Puntos: 0
Sonrisa interpretar String como si fuera formula

Hola a todos, buenas mi problema es el siguiente:

Tengo una pagina web en donde tengo un textarea al cual por medio de unos botones que simulan ser una calculadora con variables el usuario le asigna una formula digamos Y=2X+3 y lo que quiero es tomar esa formula dentro del textarea y guardarla en una BD para que después el usuario pida otra pantalla donde le muestre la formula guardada y aparte le pida los valores de las variables en este caso 'X' y haga la operacion para obtener 'Y'.

Alguna idea?? gracias de antemano.
  #2 (permalink)  
Antiguo 15/05/2010, 12:26
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años
Puntos: 454
Respuesta: interpretar String como si fuera formula

Java no tiene forma de evaluar la forma directamente, así que tendrás que hacer tú el código o buscar una librería que lo haga. No conozco ninguna, pero seguro que no te cuesta encontrar una en google.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 15/05/2010, 14:41
 
Fecha de Ingreso: marzo-2010
Mensajes: 62
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: interpretar String como si fuera formula

Si pues esa era mi idea de yo hacer el código pero pues quiero una sugerencia de como interpretar la formula por ejemplo si en el textarea hay Y=(X+3) como diferencio las cosas osea cuando da click en el boton que llama al servlet obtiene el valor con

String valor=request.getParamater("texto");

y entonces valor = "Y=(X+3)"

ahora como interpreto la 'Y' el '=' y lo demas para poder darle valores y calcularlo.
  #4 (permalink)  
Antiguo 15/05/2010, 21:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 62
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: interpretar String como si fuera formula

Bueno despues de mucho buscar descubrí como lograrlo, y chuidiang gracias por tu comentario pero creo que si se puede evaluar asi:

Código:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
 
public class ScriptDemo {
 
    public static void main(String[] args) {
        
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("js");
        
        try {
            String expression = "3+4";
            Object result = engine.eval(expression);
            System.out.println(expression+" = "+result);
        } catch(ScriptException se) {
            se.printStackTrace();
        }
    }
}
bueno aca dejo la página de donde lo saque.

[URL="http://forums.sun.com/thread.jspa?threadID=5144807"]http://forums.sun.com/thread.jspa?threadID=5144807[/URL]

Saluditos
  #5 (permalink)  
Antiguo 15/05/2010, 21:42
 
Fecha de Ingreso: marzo-2008
Mensajes: 39
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: interpretar String como si fuera formula

hola cosme1 , si estas utilizando JSP ¿por que no usas eval con javascript? como dice chuidiang puede haber api's que te parsean operaciones aritmeticas desde un String en java, otra opcion es que te programes uno tu mismo, y la otra volviendo a lo primero es que uses un Scripting Engine para java, por ejemplo el siguiente usa el motor de javascript:

Código java:
Ver original
  1. import javax.script.ScriptEngine;
  2. import javax.script.ScriptEngineManager;
  3.  
  4. public class scriptEngine {
  5.  
  6.     public static void main(String[] args) throws Exception {
  7.  
  8.         ScriptEngineManager manager = new ScriptEngineManager();
  9.         ScriptEngine engine = manager.getEngineByName("js");
  10.         engine.put("X", 3);
  11.  
  12.         Object operation = engine.eval("5*X+3*2");
  13.         Object operation2 = engine.eval("(X+3)");
  14.  
  15.         System.out.println("Evaluado operacion 1: " + operation);
  16.         System.out.println("Evaluado operacion 2: " + operation2);
  17.  
  18.     }
  19. }

en otros lugares mencionan java reflection como un estilo equivalente del eval javascript pero no tengo un buen ejemplo relativo a lo que necesitas con dicha herramienta, cabe decir que no estoy muy ligado a estos procedimientos y no te sabria decir el costo en rendimiento que conlleva usarlos, pruebalos y nos comentas

saludos, pepe

XD no vi que encontraste esta solucion jeje
  #6 (permalink)  
Antiguo 15/05/2010, 21:46
 
Fecha de Ingreso: marzo-2010
Mensajes: 62
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: interpretar String como si fuera formula

Cita:
Iniciado por pepe_3059 Ver Mensaje
hola cosme1 , si estas utilizando JSP ¿por que no usas eval con javascript? como dice chuidiang puede haber api's que te parsean operaciones aritmeticas desde un String en java, otra opcion es que te programes uno tu mismo, y la otra volviendo a lo primero es que uses un Scripting Engine para java, por ejemplo el siguiente usa el motor de javascript:

Código java:
Ver original
  1. import javax.script.ScriptEngine;
  2. import javax.script.ScriptEngineManager;
  3.  
  4. public class scriptEngine {
  5.  
  6.     public static void main(String[] args) throws Exception {
  7.  
  8.         ScriptEngineManager manager = new ScriptEngineManager();
  9.         ScriptEngine engine = manager.getEngineByName("js");
  10.         engine.put("X", 3);
  11.  
  12.         Object operation = engine.eval("5*X+3*2");
  13.         Object operation2 = engine.eval("(X+3)");
  14.  
  15.         System.out.println("Evaluado operacion 1: " + operation);
  16.         System.out.println("Evaluado operacion 2: " + operation2);
  17.  
  18.     }
  19. }

en otros lugares mencionan java reflection como un estilo equivalente del eval javascript pero no tengo un buen ejemplo relativo a lo que necesitas con dicha herramienta, cabe decir que no estoy muy ligado a estos procedimientos y no te sabria decir el costo en rendimiento que conlleva usarlos, pruebalos y nos comentas

saludos, pepe
jaja gracias pepe_3059 pero tu respuesta llego un poco tarde pero de todas maneras muchas gracias.

Saluditos
  #7 (permalink)  
Antiguo 15/05/2010, 22:42
 
Fecha de Ingreso: febrero-2007
Ubicación: Barranquilla, Colombia
Mensajes: 181
Antigüedad: 17 años, 8 meses
Puntos: 3
Respuesta: interpretar String como si fuera formula

Hola..
Primero debes dividir la cadena o String en pedazos...busca StringTokenizer...
Luego utilizar Uilizar algo como una Pila LIFO (Last In First Out) en donde vas analizando cada elemento si es un operador o si es un operando... teniendo en cuenta además que hay cierta jerarquía de los operandos, es decir, primero se evalúa una multiplicación o una división y luego una suma o resta....
No debes olvidarte de los paréntesis, llaves o corchetes, muy comunes en las matemáticas....

Busca también por notación Polaca.

Yo recuerdo que implementé uno, con funciones, trigonométricas, entre otros, pero la verdad fue hace 10 años y no recuerdo que pasó con los fuentes de ese proyecto...

http://media.mgonzalez.cl/Asignatura...#37;202009.pdf
__________________
Jose Luis Bernal Zambrano
Please response to:
[email protected]
  #8 (permalink)  
Antiguo 15/05/2010, 22:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años
Puntos: 454
Respuesta: interpretar String como si fuera formula

Vaya, no conocía esa forma

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: fuera, string, formulas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.