Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Informática para Internet / Programação Estruturada / Aula
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:
import java.util.Scanner;
public class ProgramaLetras {
public static void main(String[] args) {
char letra;
Scanner leitor = new Scanner(System.in);
System.out.println("Digite uma letra maiúscula:");
letra = leitor.nextLine().charAt(0);
if (letra == 'A') {
System.out.println("Arara");
} else if (letra == 'B') {
System.out.println("Bola");
} else if (letra == 'C') {
System.out.println("Casa");
} else if (letra == 'D') {
System.out.println("Dados");
} else if (letra == 'E') {
System.out.println("Escada");
} else {
System.out.println("Letra ainda sem palavra cadastrada...");
}
}
}
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:
import java.util.Scanner;
public class ProgramaLetras2 {
public static void main(String[] args) {
char letra;
Scanner leitor = new Scanner(System.in);
System.out.println("Digite uma letra maiúscula:");
letra = leitor.nextLine().charAt(0);
switch (letra) {
case 'A':
System.out.println("Arara");
break;
case 'B':
System.out.println("Bola");
break;
case 'C':
System.out.println("Casa");
break;
case 'D':
System.out.println("Dados");
break;
case 'E':
System.out.println("Escada");
break;
default:
System.out.println("Letra ainda sem palavra cadastrada...");
}
}
}
A forma geral do comando switch é a seguinte:
switch ( expressao )
{
case constante1 :
sequencia_de_comandos ;
break;
case constante2 :
sequencia_de_comandos ;
break;
case constante3 :
sequencia_de_comandos ;
break;
...
default:
sequencia_de_comandos;
}
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.
Veja a seguir algumas observações sobre o comando switch.
Versão 5.3 - Todos os Direitos reservados