Mais uma feature da versão 7 do Java, agora os laços switch suportam strings, antigamente eles só trabalhavam com números.
Muitas vezes queremos selecionar uma opção do programa com base em saída de string recebida do usuário ou outra parte do programa, mas antes do JDK7 não podíamos fazê-lo diretamente, em vez disso, precisavamos mapear as String para uma constante inteira ou uma constante char, só depois podíamos usá-los dentro de switch.
Mas agora com JDK7 você pode usar diretamente strings dentro do switch de forma muito simples.
Vamos ver dois exemplos, no primeiro
como fazíamos antes do JDK7 e o segundo já com suporte a srtings no laço switch.
Exemplo antes do JDK7 - Mapeando opções em números
1: String txt = JOptionPane.showInputDialog(null, "Informe uma opção:\n "+
2: "1 - Imprimir mensagem 2- Imprimir conta");
3: int op = Integer.parseInt(txt); // mapeando uma string para um inteiro
4: switch (op) {
5: case 1:
6: System.out.println("Ola mundo");
7: break;
8: case 2:
9: System.out.println(" 1 + 1 = " + (1+1));
10: break;
11: default:
12: System.out.println("opção não cadastrada");
13: }
Veja que na linha 3 fizemos a conversão da string para um inteiro , isso era necessário porque antigamente o switch não suportava strings.
Exemplo depois do JDK7 - switch com suporte a strings
1: String txt = JOptionPane.showInputDialog(null, "Informe uma opção:\n "+
2: "- Imprimir mensagem \n - Imprimir conta \n Digite sua opção");
3: switch (txt) {
4: case "Imprimir mensagem":
5: System.out.println("Ola mundo");
6: break;
7: case "Imprimir conta":
8: System.out.println(" 1 + 1 = " + (1+1));
9: break;
10: default:
11: System.out.println("opção não cadastrada");
12: }
Agora não precisamos mais do mapeamento de string para numero ou caracter, mas podemos errar na digitação da string , nesse caso recomendo que se utilize o método .toUpperCase, assim se transforma toda a string em letra maiúscula evitando assim esse tipo de erro (funciona também com o método toLowerCase). Veja como fica o exemplo:
1: String txt = JOptionPane.showInputDialog(null, "Informe uma opção:\n "+
2: "- Imprimir mensagem \n - Imprimir conta \n Digite sua opção");
3: txt = txt.toUpperCase();
4: switch (txt) {
5: case "IMPRIMIR MENSAGEM":
6: System.out.println("Ola mundo");
7: break;
8: case "IMPRIMIR CONTA":
9: System.out.println(" 1 + 1 = " + (1+1));
10: break;
11: default:
12: System.out.println("opção não cadastrada");
13: }
Dessa maneira tanto faz a forma de digitar a opção , a string sempre vai ser convertida para Maiúscula e vai funcionar sem erros, o usuário pode digitar tudo maiúsculo ou tudo minúsculo ou misturar e vai funcionar , só não pode digitar a frase errada.
Comentários
Postar um comentário
Ajude o blog a melhorar comente!!!