SoloCodigo

Programación General => Java => Mensaje iniciado por: alemag en Viernes 27 de Octubre de 2006, 05:09

Título: Instruccion Switch
Publicado por: alemag en Viernes 27 de Octubre de 2006, 05:09
Saludos compañeros, quiero implementar en un metodo una instrucción switch, pero me he encontrado con un problema. Se puede poner como centinela un string ?
Me parece que no, lo unico asignarle un entero, pero es que son muchas opciones, y quedaria un poco chapucero creo, y otra manera es hacerlo con secuencias if’s anidadas.
Me podria confirmar alguien lo del switch o si existe alguna instrucción semejante que pueda manejar strings ¿??

Gracias por adelantado.
Título: Re: Instruccion Switch
Publicado por: Mollense en Viernes 27 de Octubre de 2006, 05:57
Por lo que he leído por ahí, la variable de referencia sólo puede ser una expresión que evalúe a los tipos primitivos enteros o char.

 :hola:
Título: Re: Instruccion Switch
Publicado por: Drackzer en Viernes 27 de Octubre de 2006, 07:46
En efecto, como mi kerido compañero acaba de citar, solo puedes hacer referencia de las opciones de tu instruccion "switch" por medio de referencias de tipo entero (int) y de caracter (char)... ya que con una cadena de caracteres no podrias llevarlo a cabo, tendrias que convertir la cadena(string) a uno de estos tipos de dato... suerte amigo...!!
Título: Re: Instruccion Switch
Publicado por: lencho en Viernes 27 de Octubre de 2006, 14:52
Solo se me ocurre esto:

podrias cargar todos tus Strings a un vector, y el indice del vector utilizarlos en el Switch.

Espero y te sirva.

BYTE.
Título: Re: Instruccion Switch
Publicado por: JuanK en Viernes 27 de Octubre de 2006, 15:32
Es cierto en java no puedes usar switch sino tan solo en tipos primitivos, en C# si puedes usar switch con string porque entre otras cosas en C# string se considera nu tipo primitivo.

Una solucion, que no se que tan factible y util sea de implementar en Java, es que crees una nueva clase que herede de String y en esa clase puedes crear una sobrecarga del operador == y del operador != ( y las demas cosas que java requiera para eso), una vez hecho eso empiezas a trabajar con tu clase nueva y ptrata de usarla en un switch como se usaria normalmente o bien solo has comparaciones con if usando == y != . :scream:
Título: Re: Instruccion Switch
Publicado por: shadow_rev en Domingo 29 de Octubre de 2006, 22:21
Cita de: "JuanK"
Es cierto en java no puedes usar switch sino tan solo en tipos primitivos, en C# si puedes usar switch con string porque entre otras cosas en C# string se considera nu tipo primitivo.

Una solucion, que no se que tan factible y util sea de implementar en Java, es que crees una nueva clase que herede de String y en esa clase puedes crear una sobrecarga del operador == y del operador != ( y las demas cosas que java requiera para eso), una vez hecho eso empiezas a trabajar con tu clase nueva y ptrata de usarla en un switch como se usaria normalmente o bien solo has comparaciones con if usando == y != . :scream:
!¿ Eso si se puede ?!

Que yo sepa, java no soporta la sobrecarga de operadores. Solucionarías muchos problemas si me explicas como hacerlo (p.e la comparación de strings)
Título: Re: Instruccion Switch
Publicado por: JuanK en Domingo 29 de Octubre de 2006, 23:42
Cita de: "JuanK"
Una solucionó, que no se que tan factible y util sea de implementar en Java...

...

Seria triste que no se pudiera, cuando usaba java ( 5+ años atras ) no logré ahondar en esas características pero seria el colmo que hoy en dia aun no las tenga.
Título: Re: Instruccion Switch
Publicado por: silverfox en Lunes 30 de Octubre de 2006, 11:21
Hola...


Por desgracia, Java no soporta (ni creo que lo haga en un futuro cercano) la sobrecarga de operadores.

Sin embargo, para comparaciones de objetos, tiene un 'truquillo' interesante, que puede ser utilizado en estos casos: El interfaz Comparable.

Este interfaz consta del método compareTo(Object) para comparar dos objetos cualesquiera (A partir de la versión 1.5.0, utiliza los templates Java para evitar comparaciones entre objetos diferentes).

De todas formas, puedes probar un truco que quizá te sirva, aunque puede que no en todos los casos de cadenas, es posible que sí te valga en el tuyo en particular.

Echa un vistazo al método int hashCode() de la clase Object (por tanto, heredado por todas sus subclases).


Un saludo.


Silverfox.