A estrutura if-else if-else permite avaliar múltiplas condições em sequência, executando o bloco correspondente à primeira condição verdadeira. Esta aula focará em exemplos práticos e detalhados do uso desta estrutura.
Este exemplo classifica a nota de um aluno em conceitos utilizando if-else if-else:
public class ClassificacaoNotas {
public static void main(String[] args) {
// Nota do aluno
double nota = 7.5;
// Exibindo a nota
System.out.println("Nota: " + nota);
// Classificando a nota em conceitos
System.out.print("Conceito: ");
if (nota >= 9.0) {
System.out.println("A - Excelente");
} else if (nota >= 8.0) {
System.out.println("B - Muito bom");
} else if (nota >= 7.0) {
System.out.println("C - Bom");
} else if (nota >= 6.0) {
System.out.println("D - Regular");
} else if (nota >= 5.0) {
System.out.println("E - Em recuperação");
} else {
System.out.println("F - Reprovado");
}
// Verificando se o aluno foi aprovado ou reprovado
if (nota >= 6.0) {
System.out.println("Situação: Aprovado");
} else if (nota >= 5.0) {
System.out.println("Situação: Em recuperação");
} else {
System.out.println("Situação: Reprovado");
}
}
}
Nota: 7.5
Conceito: C - Bom
Situação: Aprovado
Observação: Neste exemplo, o Java avalia as condições em ordem. Quando encontra a primeira condição verdadeira (nota >= 7.0), executa o bloco correspondente e ignora todas as condições seguintes.
O Índice de Massa Corporal (IMC) é calculado dividindo o peso (em kg) pelo quadrado da altura (em metros). A classificação do IMC usa uma estrutura if-else if-else:
public class CalculadoraIMC {
public static void main(String[] args) {
// Dados da pessoa
double peso = 70.5; // em quilogramas
double altura = 1.75; // em metros
// Calculando o IMC
double imc = peso / (altura * altura);
// Exibindo o resultado
System.out.printf("Peso: %.1f kg\n", peso);
System.out.printf("Altura: %.2f m\n", altura);
System.out.printf("IMC: %.2f\n", imc);
// Classificando o IMC
System.out.print("Classificação: ");
if (imc < 18.5) {
System.out.println("Abaixo do peso");
} else if (imc < 25.0) {
System.out.println("Peso normal");
} else if (imc < 30.0) {
System.out.println("Sobrepeso");
} else if (imc < 35.0) {
System.out.println("Obesidade grau 1");
} else if (imc < 40.0) {
System.out.println("Obesidade grau 2");
} else {
System.out.println("Obesidade grau 3");
}
// Recomendações básicas
if (imc < 18.5) {
System.out.println("Recomendação: Consulte um nutricionista para ganho de peso saudável.");
} else if (imc < 25.0) {
System.out.println("Recomendação: Continue mantendo hábitos saudáveis.");
} else {
System.out.println("Recomendação: Consulte um médico para avaliação e orientação.");
}
}
}
Peso: 70,5 kg
Altura: 1,75 m
IMC: 23,02
Classificação: Peso normal
Recomendação: Continue mantendo hábitos saudáveis.
Dica: Note como as condições nos blocos if-else if são cumulativas. Por exemplo, para o IMC classificado como "Sobrepeso", sabemos que ele é maior ou igual a 25.0 (por causa do primeiro else if) e menor que 30.0 (pela condição do segundo else if).
Este exemplo demonstra como classificar uma pessoa de acordo com sua idade:
public class ClassificacaoIdade {
public static void main(String[] args) {
// Idade da pessoa
int idade = 25;
// Exibindo a idade
System.out.println("Idade: " + idade + " anos");
// Classificando a faixa etária
System.out.print("Classificação: ");
if (idade < 0) {
System.out.println("Idade inválida");
} else if (idade < 1) {
System.out.println("Bebê (menos de 1 ano)");
} else if (idade < 3) {
System.out.println("Bebê (1-2 anos)");
} else if (idade < 6) {
System.out.println("Criança em idade pré-escolar (3-5 anos)");
} else if (idade < 12) {
System.out.println("Criança (6-11 anos)");
} else if (idade < 18) {
System.out.println("Adolescente (12-17 anos)");
} else if (idade < 30) {
System.out.println("Jovem adulto (18-29 anos)");
} else if (idade < 60) {
System.out.println("Adulto (30-59 anos)");
} else {
System.out.println("Idoso (60 anos ou mais)");
}
// Verificando maioridade
if (idade >= 18) {
System.out.println("Status: Maior de idade");
} else {
System.out.println("Status: Menor de idade");
}
// Verificando faixas especiais
if (idade >= 16 && idade < 18) {
System.out.println("Observação: Pode votar, mas não pode dirigir.");
} else if (idade >= 18 && idade < 21) {
System.out.println("Observação: Pode votar e dirigir, mas é considerado menor de idade em alguns países.");
}
}
}
Idade: 25 anos
Classificação: Jovem adulto (18-29 anos)
Status: Maior de idade
Este exemplo implementa uma calculadora simples utilizando if-else if para determinar qual operação realizar:
import java.util.Scanner;
public class CalculadoraSimples {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Solicitando os números
System.out.print("Digite o primeiro número: ");
double numero1 = scanner.nextDouble();
System.out.print("Digite o segundo número: ");
double numero2 = scanner.nextDouble();
// Solicitando a operação
System.out.println("\nEscolha a operação:");
System.out.println("1 - Adição");
System.out.println("2 - Subtração");
System.out.println("3 - Multiplicação");
System.out.println("4 - Divisão");
System.out.print("Digite o número da operação: ");
int operacao = scanner.nextInt();
// Realizando a operação com if-else if
System.out.print("\nResultado: ");
if (operacao == 1) {
// Adição
double resultado = numero1 + numero2;
System.out.println(numero1 + " + " + numero2 + " = " + resultado);
} else if (operacao == 2) {
// Subtração
double resultado = numero1 - numero2;
System.out.println(numero1 + " - " + numero2 + " = " + resultado);
} else if (operacao == 3) {
// Multiplicação
double resultado = numero1 * numero2;
System.out.println(numero1 + " * " + numero2 + " = " + resultado);
} else if (operacao == 4) {
// Divisão
if (numero2 == 0) {
System.out.println("Erro: Divisão por zero não é permitida.");
} else {
double resultado = numero1 / numero2;
System.out.println(numero1 + " / " + numero2 + " = " + resultado);
}
} else {
// Operação inválida
System.out.println("Operação inválida! Por favor, escolha uma operação de 1 a 4.");
}
// Fechando o scanner
scanner.close();
}
}
Escolha a operação:
1 - Adição
2 - Subtração
3 - Multiplicação
4 - Divisão
Digite o número da operação: 3
Resultado: 10.0 * 5.0 = 50.0
Atenção: Observe que no caso da divisão, temos um if aninhado para verificar se o divisor é zero. Esse tipo de verificação é importante para evitar erros de execução, como a divisão por zero.
Este exemplo mostra como usar if-else if para verificar o dia da semana com base em um número:
public class VerificadorDiaSemana {
public static void main(String[] args) {
// Dia da semana (1 = Domingo, 2 = Segunda, ..., 7 = Sábado)
int dia = 3;
// Verificando o dia da semana
System.out.print("O dia " + dia + " corresponde a: ");
if (dia == 1) {
System.out.println("Domingo");
} else if (dia == 2) {
System.out.println("Segunda-feira");
} else if (dia == 3) {
System.out.println("Terça-feira");
} else if (dia == 4) {
System.out.println("Quarta-feira");
} else if (dia == 5) {
System.out.println("Quinta-feira");
} else if (dia == 6) {
System.out.println("Sexta-feira");
} else if (dia == 7) {
System.out.println("Sábado");
} else {
System.out.println("Dia inválido! O valor deve estar entre 1 e 7.");
}
// Verificando se é dia útil ou final de semana
if (dia >= 2 && dia <= 6) {
System.out.println("Este é um dia útil.");
} else if (dia == 1 || dia == 7) {
System.out.println("Este é um dia de final de semana.");
} else {
System.out.println("Dia inválido para classificação.");
}
// Comparando com implementação usando switch-case
System.out.print("\nUsando switch-case: ");
switch (dia) {
case 1:
System.out.println("Domingo");
break;
case 2:
System.out.println("Segunda-feira");
break;
case 3:
System.out.println("Terça-feira");
break;
case 4:
System.out.println("Quarta-feira");
break;
case 5:
System.out.println("Quinta-feira");
break;
case 6:
System.out.println("Sexta-feira");
break;
case 7:
System.out.println("Sábado");
break;
default:
System.out.println("Dia inválido! O valor deve estar entre 1 e 7.");
}
}
}
O dia 3 corresponde a: Terça-feira
Este é um dia útil.
Usando switch-case: Terça-feira
Comparação com switch-case: Para verificações de valores específicos (como números ou caracteres), o switch-case pode ser mais legível e eficiente que múltiplos if-else if. No entanto, para condições baseadas em intervalos ou expressões complexas, if-else if é mais apropriado.
Aqui estão algumas recomendações para o uso eficiente da estrutura if-else if-else:
Armadilhas comuns:
Teste seus conhecimentos sobre o uso da estrutura if-else if:
Reforce o conteúdo desta aula com mais dois exercícios práticos: