Cursos / Informática para Internet / Programação Estruturada / Aula

arrow_back Aula 04 - Comandos de seleção

3. Comando switch

Na seção anterior, apresentamos o comando if-else encadeados, o qual pode ser utilizado para resolver problemas de seleção. Porém, em alguns casos, o uso de comandos if-else encadeados torna a escrita e compreensão do código mais trabalhosa. Por exemplo, considere um programa que deve receber uma letra do usuário e imprimir uma palavra que comece com a letra digitada. O código a seguir mostra a rotina main considerando, por questões de espaço, apenas as letras de A a E:

x
1
import java.util.Scanner;
2
3
public class ProgramaLetras {
4
    public static void main(String[] args) {
5
        char letra;
6
        Scanner leitor = new Scanner(System.in);
7
        System.out.println("Digite uma letra maiúscula:");
8
        letra = leitor.nextLine().charAt(0);
9
        if (letra == 'A') {
10
            System.out.println("Arara");
11
        } else if (letra == 'B') {
12
            System.out.println("Bola");
13
        } else if (letra == 'C') {
14
            System.out.println("Casa");
15
        } else if (letra == 'D') {
16
            System.out.println("Dados");
17
        } else if (letra == 'E') {
18
            System.out.println("Escada");
19
        } else {
20
            System.out.println("Letra ainda sem palavra cadastrada...");
21
        }
22
    }
23
}

Observe que a leitura do caractere é feita através do leitor.nextLine() — leitura de uma String — e que o primeiro caractere dessa String é retornado, usando-se a função charAt(0), a qual será melhor vista em outra aula, mais adiante neste curso.

Pois bem, o comando switch facilita a escrita de trechos de programa em que a seleção deve ser feita entre várias alternativas. O switch é chamado de comando interno de seleção múltipla, ele testa o valor de uma expressão contra uma lista de constantes numéricas ou de caracteres. Veja o mesmo código fazendo uso do comando switch:

29
1
import java.util.Scanner;
2
3
public class ProgramaLetras2 {
4
    public static void main(String[] args) {
5
        char letra;
6
        Scanner leitor = new Scanner(System.in);
7
        System.out.println("Digite uma letra maiúscula:");
8
        letra = leitor.nextLine().charAt(0);
9
        switch (letra) {
10
            case 'A':
11
                System.out.println("Arara");
12
                break;
13
            case 'B':
14
                System.out.println("Bola");
15
                break;
16
            case 'C':
17
                System.out.println("Casa");
18
                break;
19
            case 'D':
20
                System.out.println("Dados");
21
                break;
22
            case 'E':
23
                System.out.println("Escada");
24
                break;
25
            default:
26
                System.out.println("Letra ainda sem palavra cadastrada...");
27
        }
28
    }
29
}

A forma geral do comando switch é a seguinte:

15
1
switch ( expressao )
2
{
3
    case constante1 :
4
        sequencia_de_comandos ;
5
        break;
6
    case constante2 :
7
        sequencia_de_comandos ;
8
        break;
9
    case constante3 :
10
        sequencia_de_comandos ;
11
        break;
12
    ...
13
    default:
14
        sequencia_de_comandos;
15
}

O comando switch funciona da seguinte maneira: o valor da expressão é testado, em ordem, contra os valores das constantes especificadas nos comandos case. Quando ocorrer uma condição em que a expressão seja aceita, a sequência de comandos associado ao case em questão será executado até chegar ao comando break (que para a execução da case em questão e salta para a próxima linha de código) ou ao fim do comando switch. O comando default será apenas executado caso nenhum valor seja aceito. Esse comando é opcional. Se ele não existir, nenhuma ação será realizada caso todos os testes falhem.

play_circle_filled
Vídeo 04 - Comando Switch

Veja a seguir algumas observações sobre o comando switch.

  • Os comandos switch e if diferem pois o switch testa igualdade. Já o if testa uma expressão lógica ou relacional.
  • Duas constantes case não podem ter o mesmo valor dentro de um mesmo switch.

Versão 5.3 - Todos os Direitos reservados