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

un if rebelde

Estas en el tema de un if rebelde en el foro de Java en Foros del Web. ¿Alguien me puede explicar porque no se ejecuta este if? while (rs.next()) { codigo = rs.getString("codigo"); if (codigo == clave) { nombre = rs.getString("nombre"); codigo ...
  #1 (permalink)  
Antiguo 09/04/2012, 09:50
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
un if rebelde

¿Alguien me puede explicar porque no se ejecuta este if?

while (rs.next()) {
codigo = rs.getString("codigo");
if (codigo == clave) {
nombre = rs.getString("nombre");

codigo y clave son strings. He comprobado que el programa entra en el while y va leyendo los codigos, he comprobado que 1 vez tienen el mismo valor codigo y clave pero también he comprobado que no entra en el if, ¿porqué?.

Muchas gracias
  #2 (permalink)  
Antiguo 09/04/2012, 09:53
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: un if rebelde

Porque para comparar Objetos (String es un objeto) en java se usa equals. Si vienes de c# creo que te admite ==, por eso da lugar a engaño, pero en java es básico que uses equals para objetos y == para tipos primitivos (int,boolean,char...).
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 09/04/2012, 14:23
 
Fecha de Ingreso: marzo-2012
Ubicación: Galicia
Mensajes: 27
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: un if rebelde

ok, muchas gracias, ya me estoy revisando los tipos y clases.
  #4 (permalink)  
Antiguo 09/04/2012, 16:01
 
Fecha de Ingreso: abril-2012
Ubicación: Spain
Mensajes: 14
Antigüedad: 12 años
Puntos: 0
Respuesta: un if rebelde

Cita:
Iniciado por Fuzzylog Ver Mensaje
Porque para comparar Objetos (String es un objeto) en java se usa equals. Si vienes de c# creo que te admite ==, por eso da lugar a engaño, pero en java es básico que uses equals para objetos y == para tipos primitivos (int,boolean,char...).
¿También se podría usar el compareTo no?
  #5 (permalink)  
Antiguo 10/04/2012, 01:28
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: un if rebelde

No recomiendo usar el compareTo porque no siempre da el mismo resultado que el equals en teoria si comparas dos objetos y su valor es igual equals da true y el compareTo da 0 pero en casos como en objetos de clase Bigdecimal te puede dar alguna sorpersa.

Etiquetas: programa, string
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 11:49.