Duvida Switch

4 respostas
Rudy

Tentei fazer alguns códigos para entender como o switch funciona, qunado fiz o seguinte:

Switch(val1 > val2);{
				case true:
				System.out.println(val1+" é maior que "+val2;
				break;
				case false:
				System.out.println(val2+" é maior que "+val1;
				break;
				default:
				System.out.println("Os valores são iguais");			
           	}

Ele tah acusando erro logo no primeiro case. Só quero saber se isso é por que é proibido fazer assim ou eu cometi algum erro?

As variaveis val1 e val2 sao inteiros e estão declaradas logo acima no começo do codigo.

4 Respostas

Ana.Pandini

Apenas int ou enums são permitidas no switch.

rodrigo.bossini

Primeiro, seu código tem erros de sintaxe:

switch se escreve assim, tudo minúsculo.

Não deve haver o ponto e virgula depois da cláusula do switch.

A cláusula do switch somente pode ser variáveis inteiras, ou seja, do tipo int ou menores que ele ( char, short, byte) e enums. long não pode. String não pode. Nem preciso dizer que boolean tbm não pode (val1 <val2 resulta em boolean).

Rudy

rod.attack:
Primeiro, seu código tem erros de sintaxe:

switch se escreve assim, tudo minúsculo.

Não deve haver o ponto e virgula depois da cláusula do switch.

A cláusula do switch somente pode ser variáveis inteiras, ou seja, do tipo int ou menores que ele ( char, short, byte) e enums. long não pode. String não pode. Nem preciso dizer que boolean tbm não pode (val1 <val2 resulta em boolean).

Entendi! Então o erro é mesmo por causa condição booleana que coloquei?

victorwss

Rudy:
rod.attack:
Primeiro, seu código tem erros de sintaxe:

switch se escreve assim, tudo minúsculo.

Não deve haver o ponto e virgula depois da cláusula do switch.

A cláusula do switch somente pode ser variáveis inteiras, ou seja, do tipo int ou menores que ele ( char, short, byte) e enums. long não pode. String não pode. Nem preciso dizer que boolean tbm não pode (val1 <val2 resulta em boolean).

Entendi! Então o erro é mesmo por causa condição booleana que coloquei?

Um dos erros é por causa da condição booleana. Há mais outros dois erros além disso (ponto-e-vírgula a mais e switch com letra maiúscula).

EDIT: Há mais erros também em outras linhas. “case true” e “case false” não existem, e mesmo se existissem, o default não funcionaria. Além disso, há dois parênteses que abrem e não fecham.

Criado 7 de março de 2009
Ultima resposta 8 de mar. de 2009
Respostas 4
Participantes 4