JAVA Learning

Hub de Conteúdo

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

Estrutura do Switch Case:
java
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

java
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

java
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+)

java
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

java
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:

java
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
java
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
java
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!