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, vista 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 a 0graus, 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.

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

Os dois exemplos dados são equivalentes, mas o segundo é mais fácil de entender.


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 agefor maior que 60.


4
Tarefa
Java Syntax,  nível 4lição 1
Bloqueado
This age doesn't work for me…
Sometimes we all want to change our age. First, they don't want to sell you cigarettes or beer. Then your hair starts thinning and your back aches! A programmer may not have control over time, but he or she has total control over data in programs. In this task, we correct an error so that a Person object's age variable receives a different value.

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