1. Sequência de ifdeclarações

Às vezes, um programa precisa executar muitas ações diferentes, dependendo do valor de uma variável ou de uma expressão.

Digamos que nossa tarefa seja algo assim:

  • Se a temperatura for superior a 20graus, coloque uma camisa
  • Se a temperatura for maior que 10graus e menor que (ou igual a) 20, coloque um suéter
  • Se a temperatura for maior que 0graus e menor que (ou igual a) 10, coloque uma capa de chuva
  • Se a temperatura for inferior 0a graus, coloque um casaco.

Veja como isso pode ser representado no 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");
   }
}

If-elseas instruções podem ser aninhadas umas nas outras. Isso torna possível implementar uma lógica bastante complexa em um programa.

Mas o exemplo acima também é interessante porque podemos tornar o código um pouco mais simples omitindo as chaves:

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");

No entanto, os programadores geralmente escrevem essa construção de maneira um pouco 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");

Todos esses três exemplos são equivalentes.


2. Nuances do elsebloco

Um ponto importante:

Se não usar chaves em uma if-elseconstrução, o elserefere-se ao anterior mais próximo if.

Exemplo:

Nosso código Como vai 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");
}

Se você observar o código à esquerda, parece que a saída da tela será "Você não precisa trabalhar". Mas esse não é o caso. Na realidade, o elsebloqueio e a declaração "Você não precisa trabalhar" estão associados à segunda ifdeclaração (a mais próxima).

No código à direita, os associados ife elseestão destacados em vermelho. Além disso, as chaves são colocadas de forma inequívoca, mostrando claramente quais ações serão executadas. A string Você não precisa trabalhar nunca é exibida quando ageé maior que 60?



3. Exemplo de uso de uma if-elsedeclaração

Já que exploramos if-elsetão bem a afirmação, vamos dar um exemplo:

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
   }
}
Exibindo o mínimo de dois números