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 temperature = 9;

if (temperature > 20) {
   System.out.println("put on a shirt");
} else { // Here the temperature is less than (or equal to) 20
   if (temperature > 10) {
      System.out.println("put on a sweater");
   } else { // Here the temperature is less than (or equal to) 10
      if (temperature > 0) {
         System.out.println("put on a raincoat");
      } else // Here the temperature is less than 0
         System.out.println("put on a coat");
   }
}

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 temperature = 9;

if (temperature > 20) {
   System.out.println("put on a shirt");
} else if (temperature > 10) { // Here the temperature is less than (or equal to) 20
   System.out.println("put on a sweater");
} else if (temperature > 0) { // Here the temperature is less than (or equal to) 10
   System.out.println("put on a raincoat");
} else { // Here the temperature is less than 0
   System.out.println("put on a coat");
}

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 age = 65;

if (age < 60)
   if (age > 20)
      System.out.println("You must work");
else
   System.out.println("You don't have to work");
int age = 65;

if (age < 60) {
   if (age > 20)
     System.out.println("You must work");
   else
     System.out.println("You don't have to work");
}

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 age 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 Solution {
   public static void main(String[] args) {
     Scanner console = new Scanner(System.in); // Create a Scanner object
     int a = console.nextInt(); // Read the first number from the keyboard
     int b = console.nextInt(); // Read the second number from the keyboard
     if (a < b)                   // If a is less than b
       System.out.println(a);     // we display a
     else                         // otherwise
       System.out.println(b);     // we display b
   }
}
Mostrar el número mínimo de dos números