1. Secuencia de declaraciones if

A veces, un programa necesita realizar muchas acciones diferentes dependiendo del valor de una variable o del valor de una expresión.

Supongamos que nuestra tarea es algo así:

  • Si la temperatura es mayor que 20 grados, ponte una camisa
  • Si la temperatura es mayor que 10 grados y menor que (o igual a) 20, ponte un suéter
  • Si la temperatura es mayor que 0 grados y menor que (o igual a) 10, ponte un impermeable
  • Si la temperatura es menor que 0 grados, ponte un abrigo.

Así es como esto puede ser representado en código:

int temperatura = 9;

if (temperatura > 20) {
   System.out.println("ponte una camisa");
} else { // Aquí la temperatura es menor o igual a 20
   if (temperatura > 10) {
      System.out.println("ponte un suéter");
   } else { // Aquí la temperatura es menor o igual a 10
      if (temperatura > 0) {
         System.out.println("ponte un impermeable");
      } else // Aquí la temperatura es menor que 0
         System.out.println("ponte un abrigo");
   }
}

Las declaraciones if-else pueden anidarse entre sí. Esto hace posible implementar una lógica bastante compleja en un programa.

Sin embargo, los programadores generalmente escriben esta construcción de manera un poco diferente:

int temperatura = 9;

Si (temperatura > 20) {
   System.out.println("ponte una camisa");
} else if (temperatura > 10) { // Aquí la temperatura es menor que (o igual a) 20
   System.out.println("ponte un suéter");
} else if (temperatura > 0) { // Aquí la temperatura es menor que (o igual a) 10
   System.out.println("ponte un impermeable");
} else { // Aquí la temperatura es menor que 0
   System.out.println("ponte un abrigo");
}

Los dos ejemplos dados son equivalentes, pero el segundo es más fácil de entender.


2. Matices del bloque else

Un punto importante:

Si no se utilizan llaves en una construcción de if-else, entonces el else se refiere al if previo más cercano.

Ejemplo:

Nuestro código Cómo funcionará
int edad = 65;

if (edad < 60)
   if (edad > 20)
      System.out.println("Debes trabajar");
else
   System.out.println("No tienes que trabajar");
int edad = 65;

if (edad < 60)
   if (edad > 20)
      System.out.println("Debes trabajar");
      else
   System.out.println("No tienes que trabajar");

Si observamos el código de la izquierda, pareciera que la salida en pantalla sería "No tienes que trabajar". Pero en realidad, ese no es el caso. En realidad, el bloque else y la sentencia "No tienes que trabajar" están asociados con la segunda instrucción if (la más cercana).

En el código de la derecha, se resaltan en rojo las instrucciones if y else asociadas. Además, las llaves están colocadas de forma inequívoca, mostrando claramente qué acciones se realizarán. La cadena No tienes que trabajar nunca se muestra cuando edad es mayor que 60.



3. Ejemplo del uso de un if-else statement

Ya que hemos explorado if-else statement tan a fondo, veamos un ejemplo:

import java.util.Scanner;
public class Solución {
   public static void main(String[] args) {
     Scanner consola = new Scanner(System.in); // Crear un objeto Scanner
     int a = consola.nextInt(); // Leer el primer número del teclado
     int b = consola.nextInt(); // Leer el segundo número del teclado
     if (a < b)                   // Si a es menor que b
       System.out.println(a);     // mostramos a
     else                         // de lo contrario
       System.out.println(b);     // mostramos b
   }
}
Mostrar el número mínimo de dos números