Un booleano no me respeta

Iniciado por reygecko, 23 Diciembre 2012, 15:13 PM

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

reygecko

Buenos días a todos.

Los booleanos deberían ser sencillos, sólo pueden valer "true" o "false". Pues me están volviendo loco.  :huh:

Con este programa tan sencillo, pretendo comprobar el valor de una variable booleana:

public class booleano {
    public static void main(String args[]) {
        boolean condicion = false;
        if (condicion = false)
            System.out.println("CONDICIÓN VALE FALSE");
        if (condicion = true)
            System.out.println("CONDICIÓN VALE TRUE");
    }
}


Pues bien, aunque yo mismo inicializo la variable "condicion" con el valor "FALSE", sin embargo el resultado que obtengo al ejecutar el programa es "CONDICIÓN VALE TRUE".

Por favor, ¿podría alguien ser tan amable de explicarme qué estoy haciendo mal? Muchas gracias.

RevangelyonX

Te estas colando en los iguales del IF. Lo estas inicializando en lugar de compararlo.

== o equals()

Salu2
Just Linux
OSCP certified

reygecko

Maldita sea, es cierto.

Perdón por mi estupidez de pregunta,  muchas gracias por responder.

Un saludo.

Slider324

Podrias usar if y else if quedando de esta forma:


public class booleano {
    public static void main(String args[]) {
        boolean condicion = false;
        if (condicion == false){
            System.out.println("CONDICIÓN VALE FALSE");
        }else if (condicion == true){
            System.out.println("CONDICIÓN VALE TRUE");
     }
   }
}

Valkyr

Y estarías haciendo una comprobación de más. ¿Si un booleano solo tiene dos valores posibles, por qué comprobar los dos?

Código (java) [Seleccionar]

public class booleano {
    public static void main(String args[]) {
        boolean condicion = false;
        if (!condicion) {
            System.out.println("CONDICIÓN VALE FALSE");
        } else {
            System.out.println("CONDICIÓN VALE TRUE");
        }
    }
}

reygecko

Sí, Valkyr, tienes razón.  Lo que ocurre es que mi código original no era así, allí sólo hice una comprobación.  Al obtener un resultado que no esperaba es cuando testeé exhaustivamente al booleano por ese motivo hice este pequeño código donde expresamente daba valor a cada una de las dos posibilidades.

Luego, como ya he visto, todo era provocado por mi ignorancia del lenguaje.  Y todo era más sencillo, claro.

Gracias también a ti por la ayuda.  ;)