Switch Case em Java
Guia completo para dominar a estrutura de seleção múltipla
1. O que é Switch Case?
O switch case é uma estrutura de controle que permite executar diferentes blocos de código baseado no valor de uma variável ou expressão. É uma alternativa mais elegante ao uso de múltiplos if-else if quando você precisa comparar uma variável com vários valores possíveis.
Imagine um menu de opções: em vez de escrever vários if-else if para cada opção (1, 2, 3, 4...), o switch case torna o código mais limpo e fácil de ler.
2. Sintaxe Básica
switch (expressao) {
case valor1:
// código executado se expressao == valor1
break;
case valor2:
// código executado se expressao == valor2
break;
default:
// código executado se nenhum case corresponder
}
Componentes do Switch:
- switch (expressao): A variável ou expressão a ser testada
- case valor: Cada valor possível para comparação
- break: Sai do switch após executar o case
- default: Executado quando nenhum case corresponde (opcional)
3. Exemplos Práticos
Exemplo 1: Menu de Opções
import java.util.Scanner;
public class MenuOpcoes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("=== MENU ===");
System.out.println("1 - Cadastrar");
System.out.println("2 - Listar");
System.out.println("3 - Editar");
System.out.println("4 - Excluir");
System.out.print("Escolha uma opção: ");
int opcao = sc.nextInt();
switch (opcao) {
case 1:
System.out.println("Cadastrando novo registro...");
break;
case 2:
System.out.println("Listando registros...");
break;
case 3:
System.out.println("Editando registro...");
break;
case 4:
System.out.println("Excluindo registro...");
break;
default:
System.out.println("Opção inválida!");
}
sc.close();
}
}
Exemplo 2: Dias da Semana
public class DiaSemana {
public static void main(String[] args) {
int dia = 3;
String nomeDia;
switch (dia) {
case 1: nomeDia = "Domingo"; break;
case 2: nomeDia = "Segunda-feira"; break;
case 3: nomeDia = "Terça-feira"; break;
case 4: nomeDia = "Quarta-feira"; break;
case 5: nomeDia = "Quinta-feira"; break;
case 6: nomeDia = "Sexta-feira"; break;
case 7: nomeDia = "Sábado"; break;
default: nomeDia = "Dia inválido";
}
System.out.println("Dia: " + nomeDia);
}
}
Exemplo 3: Switch com String (Java 7+)
public class SwitchString {
public static void main(String[] args) {
String mes = "Janeiro";
switch (mes) {
case "Janeiro": case "Março": case "Maio":
case "Julho": case "Agosto": case "Outubro": case "Dezembro":
System.out.println(mes + " tem 31 dias");
break;
case "Fevereiro":
System.out.println(mes + " tem 28 ou 29 dias");
break;
case "Abril": case "Junho": case "Setembro": case "Novembro":
System.out.println(mes + " tem 30 dias");
break;
default:
System.out.println("Mês desconhecido");
}
}
}
Exemplo 4: Calculadora Simples
import java.util.Scanner;
public class Calculadora {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Digite o primeiro número: ");
double num1 = sc.nextDouble();
System.out.print("Digite o operador (+, -, *, /): ");
char operador = sc.next().charAt(0);
System.out.print("Digite o segundo número: ");
double num2 = sc.nextDouble();
switch (operador) {
case '+': System.out.println("Resultado: " + (num1 + num2)); break;
case '-': System.out.println("Resultado: " + (num1 - num2)); break;
case '*': System.out.println("Resultado: " + (num1 * num2)); break;
case '/':
if (num2 != 0) System.out.println("Resultado: " + (num1 / num2));
else System.out.println("Erro: Divisão por zero!");
break;
default: System.out.println("Operador inválido!");
}
sc.close();
}
}
4. Switch vs If-Else
| Aspecto | Switch Case | If-Else |
|---|---|---|
| Uso | Comparar uma variável com múltiplos valores exatos | Qualquer tipo de condição complexa |
| Legibilidade | Mais limpo para múltiplas opções | Melhor para condições complexas |
| Performance | Mais rápido com muitos cases | Pode ser mais lento |
Quando usar cada um:
Use Switch quando:
- Comparar uma variável com 3 ou mais valores específicos
- Os valores são constantes (números, strings, enums)
- Quer código mais legível para múltiplas opções
Use If-Else quando:
- Precisa de condições complexas (>, <, &&, ||)
- Trabalha com intervalos de valores
- Tem apenas 1 ou 2 condições para verificar
5. Regras Importantes
Regra 1: Sempre use break!
Sem o break, o código continua executando os próximos cases (fall-through).
Regra 2: Fall-through intencional
Às vezes, o fall-through é útil para agrupar cases com a mesma ação:
char letra = 'a';
switch (letra) {
case 'a': case 'e': case 'i': case 'o': case 'u':
System.out.println("É uma vogal");
break;
default:
System.out.println("É uma consoante");
}
Tipos permitidos no Switch:
- Primitivos: byte, short, int, char
- String: desde Java 7
- Enum: enumerações
- Wrapper classes: Byte, Short, Integer, Character
Não aceita: long, float, double, boolean
6. Exercícios Práticos
Exercício 1: Conversor de Notas
Crie um programa que converta uma nota numérica (0-10) em conceito (A, B, C, D, E) usando switch.
Mostrar Solução
import java.util.Scanner;
public class ConceituadorNotas {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Digite a nota (0-10): ");
int nota = sc.nextInt();
switch (nota) {
case 10: case 9:
System.out.println("Conceito: A - Excelente");
break;
case 8: case 7:
System.out.println("Conceito: B - Bom");
break;
case 6: case 5:
System.out.println("Conceito: C - Regular");
break;
case 4: case 3:
System.out.println("Conceito: D - Insuficiente");
break;
case 2: case 1: case 0:
System.out.println("Conceito: E - Reprovado");
break;
default:
System.out.println("Nota inválida!");
}
sc.close();
}
}
Exercício 2: Sistema de Estações
Crie um switch que receba um número de mês (1-12) e informe qual estação do ano corresponde.
Mostrar Solução
import java.util.Scanner;
public class Estacoes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Digite o mês (1-12): ");
int mes = sc.nextInt();
switch (mes) {
case 12: case 1: case 2: System.out.println("Verão"); break;
case 3: case 4: case 5: System.out.println("Outono"); break;
case 6: case 7: case 8: System.out.println("Inverno"); break;
case 9: case 10: case 11: System.out.println("Primavera"); break;
default: System.out.println("Mês inválido!");
}
sc.close();
}
}
Exercício 3: Cardápio de Lanchonete
Crie um menu com 5 opções de lanches e seus preços usando switch.
7. Resumo Visual
Estrutura do Switch Case:
switch (variavel) { case valor: código; break; }
• switch: inicia a estrutura
• case: cada opção possível
• break: sai do switch (não esqueça!)
• default: executado quando nenhum case corresponde
Uso no Mundo Real:
• Menus de aplicações e sistemas
• Processamento de comandos do usuário
• Conversão de códigos e categorias
• Seleção de operações em calculadoras
• Roteamento de ações baseadas em tipo
• Estados de máquinas de estado
Conclusão
O Switch Case é uma ferramenta poderosa para tornar seu código mais limpo e legível quando você precisa comparar uma variável com múltiplos valores. Ele é especialmente útil para menus, categorização e seleção de opções.
Lembre-se: Use switch para valores específicos e múltiplas opções. Use if-else para condições complexas e intervalos!