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

Separar caracteres de un String

Estas en el tema de Separar caracteres de un String en el foro de Java en Foros del Web. Hola, estoy haciendo una práctica de la universidad que consiste en un laboratorio matemático de vectores que lee expresiones del estilo Sumar(a, Restar(a, b)) donde ...
  #1 (permalink)  
Antiguo 02/06/2009, 02:52
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 5 meses
Puntos: 0
Separar caracteres de un String

Hola, estoy haciendo una práctica de la universidad que consiste en un laboratorio matemático de vectores que lee expresiones del estilo
Sumar(a, Restar(a, b)) donde a y b son nombres de variables que también pueden ser vectores, es decir, Sumar([1, 2, 3], Restar(a, [1,2, 3]))

El problema es que no se como separar las expresiones del tipo Sumar(a, Restar(a,b)) para que por un lado se obtenga el valor a del primer argumento y luego se separe Restar(a, b), no se como separar los argumentos que pueden ser vectores, nombres de variables u otra expresión.

Alguna idea??? Me he explicado bien??
  #2 (permalink)  
Antiguo 02/06/2009, 04:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 15 años
Puntos: 3
Respuesta: Separar caracteres de un String

Hola Basmang.
Lo que tienes que hacer es ir realizando las operaciones de dentro hacia fuera.
Para ir evaluando las subcadenas de String tendrías que usar la clase StringTokenizer.
La verdad es que la práctica se las trae! Si fuera hacer operaciones sobre números ... pero si lo mezclas con vectores, variables ...
Te están pidiendo que hagas casi un Mathematica.
  #3 (permalink)  
Antiguo 02/06/2009, 04:39
 
Fecha de Ingreso: abril-2008
Mensajes: 141
Antigüedad: 16 años
Puntos: 0
Respuesta: Separar caracteres de un String

Esto me suena a recursivo... Esto me suena a una estructura de tipo arbol binario :P
  #4 (permalink)  
Antiguo 02/06/2009, 06:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar caracteres de un String

Lo que estas comentando es prácticamente definir una gramática, pero si es bastante simple, lo puedes hacer a lo rápido en función de los delimitadores (, ), [, ] , ',' y utilizando recursión, o recursión transformada en iteración para no hacer saltar la pila.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #5 (permalink)  
Antiguo 03/06/2009, 04:21
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Separar caracteres de un String

Gracias por las respuestas

Según me comento el profesor tengo que tener una clase que se llama Interprete que va recorriendo los diferentes comandos que tengo. Sumar, Restar...

Entonces tengo Sumar por ejemplo entonces tengo que separar los dos argumentos entonces, si utilizo el StringTokenizer con "()" me los separa bien si son vectores de la forma [a, b, c] o nombres de variables.

Entonces si uno de los argumentos que separo es otra operacion tengo que hacer una llamada recursiva al interprete para obtener el resultado de esa operación.

Entonces no se como utilizar el StringTokenizer para que me separe algo del estilo Sumar(a, Restar(a, b)) porque si utilizo () no me lo separa bien y si utilizo (,) tampoco que es lo que tb habia pensado.
  #6 (permalink)  
Antiguo 03/06/2009, 05:37
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar caracteres de un String

Lo que tienes que pensar es como separar los argumentos de forma recursiva, por que StringTokenizer no es recursivo y por tanto no te sirve.

Pero no te voy a decir como hacerlo, que la practica es para que tú pienses, no yo .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #7 (permalink)  
Antiguo 03/06/2009, 05:55
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 15 años
Puntos: 3
Respuesta: Separar caracteres de un String

GreenEyed, no quiero llevarte la contraria pero se puede usar el StringTokenizer en un método recursivo.
Está claro que StringTokenizer no es recursivo, sólo sirve para "trocear" cadenas de caracteres.
Basmang, yo empezaría a hacer el método para que te funcionara con una sóla operación. Luego lo modificaría para hacerlo recursivo y que pueda realizar más de una Operación.
Saludos.
  #8 (permalink)  
Antiguo 03/06/2009, 08:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Separar caracteres de un String

Cita:
Iniciado por Noelito3 Ver Mensaje
GreenEyed, no quiero llevarte la contraria pero se puede usar el StringTokenizer en un método recursivo.
No te preocupes, ni que yo tuviera siempre la razón . Quizá no me he explicado bien, lo que quería decir es que no es el método más adecuado ni hace lo que el quiere que haga para este caso, puesto que no separa "recursivamente en partes". Por poder usar... se pueden usar muchas cosas, pero de ahí a que sea eficiente...

Pudiendo hacer un lastIndexOf para hallar el termino que "cierre" la operación actual, no se a que vendría usar StringTokenizer. Pero vamos, cada uno usa lo que quiere.

PD: Y por supuesto me refiero a este caso concreto.
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #9 (permalink)  
Antiguo 04/06/2009, 01:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 169
Antigüedad: 15 años
Puntos: 3
Respuesta: Separar caracteres de un String

Vale. Ahora si te has explicado :).
Pues ya que el amigo Basmang use la alternativa que crea oportuna.
Saludos!
  #10 (permalink)  
Antiguo 04/06/2009, 07:19
 
Fecha de Ingreso: noviembre-2008
Mensajes: 17
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Separar caracteres de un String

Bueno al final os doy la razón a los dos

En las operaciones que no son recursivas como cargar, grabar o listar las variables a las que le llegan el nombre de un fichero he usado StringTokenizer ya que le llega el nombre del fichero Cargar("nombre"), entonces lo separo con el StringTokenizer y tengo el nombre del fichero, en el resto no.

Lo que sigo dudando es como separar los argumentos. La última vez que hable con el profesor me dijo lo que ya comenté, por ejemplo Sumar([1,2], [1,2]) o Sumar (a, b), con cosas asi no tengo problemas, utilizo un procedimiento donde separo los vectores o el nombre de las variables y obtengo los argumentos.

Entonces el profesor me comento que si me llega algo como Sumar (a, Sumar(a, b)), tengo que separar por un lado "a" que como ya es un vector no tengo que hacer llamadas recursivas y Sumar(a, b) con el que llamo al evaluador correspondiente que me obtiene el valor.

Después de soltar este rollo, no se como separar el Sumar(a,b) de argumento porque no me vale utilizar , ni () de separadores, en los vectores fue facil porque cojo lo que esta entre [].

Vaya práctica...
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 15:04.