terça-feira, 11 de dezembro de 2012

Usando switch...case

Uma das estrutura condicionais bastante utilizada em programação java (C, C++ etc) é o switch. O switch verifica uma variável, compara o valor desta variável com os indicados nas cláusulas case. Os cases são as possibilidades de resultados que são obtidos por switch. Caso algum case seja igual ao valor contido na variável, as instruções deste bloco case são executadas.

A estrutura do switch é:

switch (variável) {
    case valor1 :
        Código a ser executado caso valor1 seja igual a da variável
    case valor2 :
        Código a ser executado caso valor2 seja igual a da variável
   case valor3 :
        Código a ser executado caso valor3 seja igual a da variável   
}

Até a versão 6 do Java, switch tratava os tipos primitivos de dados: byte, short, char e int. Agora é possível trabalhar com classes enumeradas e String.


 O resultado quando rodamos esta classe é:

O que mais devemos perceber com relação a utilização do switch/case?
  1. a sintaxe exige que depois do case exista um valor
  2. entre os parênteses depois de switch deve estar uma variável pura, isto é, não podemos colocar neste local uma condicional do tipo (variavel1 > 0)
  3. para marcar o fim do bloco de execução de um case devemos colocar no final do bloco a palavra reservada break
  4. como o switch/case pode ter várias possibilidades, veja no nosso caso, que a variável utilizada é um inteiro e este tipo de variável pode assumir muito mais valores que de 1..7. Utilizamos para tratar estes casos com uma cláusula default. O bloco definido por default é sempre executado quando nenhum dos testes case programados é verdadeiro. Por convenção ele é colocado ao final das condições.

Vamos agora fazer uma variação da classe que testamos. Chamaremos de Exemplo2.java


Note que mantive o método converte que agora estou chamando de toString() e criei um novo método toInt() que faz o inverso de toString().

Este método tem duas coisas interessantes:
  1. utiliza switch ... case com valores do tipo String
  2. utilize String.toLowerCase() para colocar todas as letras em minúsculas e deixar o nosso código um pouco mais genérico.

Vamos compilar e rodar agora a nova classe. No meu caso tenho que trocar para o Windows, pois não tenho Java 7 no linux.
Note que gravo diaStr o valor "Domingo" que é passado para toInt(diaStr). Com isto o switch/case interno pode recodificar a String em um inteiro.

Nenhum comentário:

Postar um comentário