Resultado if falso cuando deberia ser verdadero

Iniciado por tomaco, Mayo 04, 2018, 04:40:59 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 04, 2018, 04:40:59 PM Ultima modificación: Mayo 04, 2018, 07:35:32 PM por Gabriela
Tengo una clase Cerradura con los atributos claveDeApertura y cantidadDeFallosConsecutivosQueLaBloquean y el método abrir() en el cual tengo que verificar si se pasó la clave correcta, si no llegó a la cantidad de fallos consecutivos y si la cerradura no está bloqueada. Por defecto el estado de la cerradura y de bloqueo es false (la cerradura está cerrada y no está bloqueada). Cuando paso una clave correcta, por alguna razón el if me da falso al revisar la clave pasada con la clave del objeto pero cuando hago el debug resulta que el if deberia de ser verdadero porque cumple con todo lo solicitado y recibe bien el dato y lo mas gracioso es que antes funcionaba y de golpe dejó de funcionar jaja. Si pongo una clave incorrecta funciona bien pero me llama la atención eso.

Código: java
public Boolean abrir(Integer clave)
{
if((clave == claveDeApertura) && (cantidadFallos < cantidadDeFallosConsecutivosQueLaBloquean) && (!estadoBloqueo))
{
estadoCerradura = true;
cantidadFallos = 0;
return true;
}

cantidadFallos++;

if(cantidadFallos == cantidadDeFallosConsecutivosQueLaBloquean)
{
estadoBloqueo = true;
estadoCerradura = false;
}

return false;
}


este es el método abrir()

debuggealo paso a pasa y encontraras el problema
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
debuggealo paso a pasa y encontraras el problema
es lo que hice (arriba lo dije) y cuando veo los valores que recibe el if, son correctos por lo tanto deberia de entrar. Probando me di cuenta que "el fallo" esta en la primera comparacion, la de la clave atributo y la clave del parametro pero en el debug ambos son iguales por lo que no entiendo porque no entra al if (lo demas del if funciona bien, ya lo comprobe)

Comparte el codigo completo del proyecto para poder ayudarte.
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

El problema es que estás comparando dos Strings con "==", esto compara solo si las Referencias son iguales, no si el valor es el mismo. Te pongo un ejemplo.

"test" == "test" te dará verdadero
new String("test") == "test" te dará falso

Para comparar Strings en Java tendrás que usar .equals()

Saludos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Buenas...

En java los objetos no se comparan con el == en la clase integer hay un metodo que creo que se llama intvalue que lo devuelve como un int, ya que sino los objetos con == siempre seran distintos..