• Lunes 18 de Noviembre de 2024, 00:27

Autor Tema:  Instruccion Switch  (Leído 2673 veces)

alemag

  • Miembro MUY activo
  • ***
  • Mensajes: 180
    • Ver Perfil
Instruccion Switch
« en: Viernes 27 de Octubre de 2006, 05:09 »
0
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.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Instruccion Switch
« Respuesta #1 en: Viernes 27 de Octubre de 2006, 05:57 »
0
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:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Drackzer

  • Miembro activo
  • **
  • Mensajes: 40
  • Nacionalidad: mx
    • Ver Perfil
Re: Instruccion Switch
« Respuesta #2 en: Viernes 27 de Octubre de 2006, 07:46 »
0
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...!!
INGENIERIA EN SISTEMAS - Prox. Sitio Web
"BETTA GLOBAL SYSTEMS"


lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Instruccion Switch
« Respuesta #3 en: Viernes 27 de Octubre de 2006, 14:52 »
0
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.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Instruccion Switch
« Respuesta #4 en: Viernes 27 de Octubre de 2006, 15:32 »
0
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:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

shadow_rev

  • Miembro MUY activo
  • ***
  • Mensajes: 397
  • Nacionalidad: co
  • Un SPARTAN no muere en combate
    • Ver Perfil
    • http://shadowrev.blogspot.com
Re: Instruccion Switch
« Respuesta #5 en: Domingo 29 de Octubre de 2006, 22:21 »
0
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)
Volará quien le ponga alas a sus sueños (Candidate for goddess)
Si el mal existe en este mundo, reside en el corazón de la humanidad (Edward D. Morrison - Tales of Phantasia)
Lo único que puedes cambiar del pasado, es lo que sientes por él en el presente (Lockon Stratos - Mobile Suit Gundam 00)
Ingeniero de Sistemas

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Instruccion Switch
« Respuesta #6 en: Domingo 29 de Octubre de 2006, 23:42 »
0
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.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Instruccion Switch
« Respuesta #7 en: Lunes 30 de Octubre de 2006, 11:21 »
0
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.