Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] CONDICION IF ELSE SIN { ... } NO FUNCIONA EN INTELLIJ

El siguiente código ejecuta ambos mensajes en consola cuando solo debería imprimir uno de ellos.

public class Condicionales {
    public static void main(String[] args) {
        int edad = 8;
        if (edad >= 18)
            System.out.println("Usted puede ingresar");
        System.out.println("Usted NO puede ingresar");
    }
}
public class Condicionales {
    public static void main(String[] args) {
        int edad = 8;
        if (edad >= 18) System.out.println("Usted puede ingresar");
        System.out.println("Usted NO puede ingresar");
    }
}

Me parece curioso que solo funcione con las { ... }

public class Condicionales {
    public static void main(String[] args) {
        int edad = 28;
        if( edad >= 18 ) {
            System.out.println("Usted puede ingresar");
        } else {
            System.out.println("Usted puede ingresar");
        }

    }
}
2 respuestas
solución!

Hola Jean,

Entiendo la confusión, y es un detalle muy importante a tener en cuenta cuando se trabaja con condicionales en Java.

La razón por la que ves ambos mensajes en la consola es porque Java interpreta tu código de la siguiente manera: si la condición en la declaración if es verdadera, entonces ejecuta la siguiente línea de código. Después de eso, independientemente de si la condición era verdadera o falsa, continúa ejecutando el resto del código.

En tu primer y segundo ejemplo:

public class Condicionales {
    public static void main(String[] args) {
        int edad = 8;
        if (edad >= 18)
            System.out.println("Usted puede ingresar");
        System.out.println("Usted NO puede ingresar");
    }
}

y

public class Condicionales {
    public static void main(String[] args) {
        int edad = 8;
        if (edad >= 18) System.out.println("Usted puede ingresar");
        System.out.println("Usted NO puede ingresar");
    }
}

La condición if (edad >= 18) es falsa, por lo que la línea System.out.println("Usted puede ingresar"); no se ejecuta. Sin embargo, la siguiente línea System.out.println("Usted NO puede ingresar"); no está dentro de un bloque de código del if (delimitado por {}), por lo que se ejecuta independientemente de la condición if.

En tu tercer ejemplo:

public class Condicionales {
    public static void main(String[] args) {
        int edad = 28;
        if( edad >= 18 ) {
            System.out.println("Usted puede ingresar");
        } else {
            System.out.println("Usted NO puede ingresar");
        }
    }
}

Aquí, tienes un bloque de código else que se ejecuta si la condición if es falsa. Por lo tanto, solo uno de los mensajes se imprimirá, dependiendo de si la condición es verdadera o falsa.

Espero que esto aclare tu confusión. Recuerda, si solo tienes una línea de código que deseas que se ejecute en función de una condición if, puedes omitir las {}, pero si tienes más de una línea de código, necesitarás usar {} para delimitar el bloque de código que se debe ejecutar.

Espero haber ayudado. Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte.

¡Vamos juntos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios.

Hola Adriana, hubo un error de tipeo, en el ejemplo 1 y 2 que brinde, debio decir int edad = 28; y no int edad = 8;.

Acabo de ver nuevamente el video de la clase y me di cuenta que el profesor no hacia referencia a omitir las { ... } para el uso de if else sino solo para if, gracias por tu tiempo en aclarar a mi duda.