Questão switch

2 respostas
diego2005

Pessoal, não consegui entender muito bem essa questão:

public class Switch 
{	
    final static short x = 2;
    public static int y = 0;
	
    public static void main(String [] args) 
    {
         for(int z = 0; z < 4; z++) 
         {
	switch(z) 
	{
	     case x: System.out.print(z + " - 0\n");
	     default: System.out.print(z + " - def\n");
	     case x-1: System.out.print(z + " - 1\n"); break;
	     case x-2: System.out.print(z + "- 2\n");
	}
          }
    }
 }

A saída é: 210def1def1

Quando o z é zero, ele testa o 1º case (case x), onde x é igual a 2, então ele passa para o próximo teste, e o próximo teste é default, ele não deveria entrar ai??

E quando o z é 3, ele testa o 1º case (case x), depois passa pelo default, e aqui ele entra, não entendi pq ele entrar aki quando é 3 e não entra quando é zero.

Esse default no meio me deixou confuso.

Será que alguém pode me explicar.

Valeu.... :wink:

2 Respostas

cassio

Olá!

Quando o switch é executado, todas as opçòes são estudadas antes de escolher qual das opções será executada. O default só é executado quando o valor da variável analizada no switch não existe em nenhuma das opções case. O fato do default estar no meio da declaração não muda nada.

Abraço!

diego2005

Ah…entendi, pensei que ele fosse analisando caso a caso, então ele analisa todas as opções e depois que ele executa. Agora ficou claro.

Valeu pela explicação…

Criado 10 de julho de 2006
Ultima resposta 10 de jul. de 2006
Respostas 2
Participantes 2