no case, se nao me engano, precisa ser final e int pra funcionar…
alguém me corrija se eu estiver errado… faz tempo que nao uso case…
Marky.Vasconcelos
O case só aceita inteiros e chars.
antoniopopete
case so aceite inteiros e char.
E se for usar variavel a mesma deve sr final.
O if aceita comparações.
Para uso de apenas um valor, você só pode usar valores booleanos.
if(true )//(inutil)
boolean a = false;
if(a)
o resto, você deve fazer comparações para utilizar o if
Marky.Vasconcelos
O Switch além de apenas aceitar inteiros e chars, os valores a serem comparados tem que ser final, fora o fato de switch ser lento.
Acho que uma implementação melhor do código ajudaria a performance e deixaria o código mais limpo.
EDITADO
Aproveitando…qual a diferença de eu usar { }dentro do case ou nao?
case 1:
bla
bla
bla
break
case 1:{
bla
bla
bla
break}
ViniGodoy
pardal_nb:
Aproveitando…qual a diferença de eu usar { }dentro do case ou nao?
A diferença está no escopo das variáveis.
Se você não usar as chaves, as variáveis terão visibilidade do ponto onde elas são declaradas, até o final do switch.
Se você usar as chaves, as variáveis só valem dentro das chaves.
Exemplo:
int x = 10;
switch (x) {
case 1:
int y = 10;
x = y;
break;
case 2:
y = 5; //Válido!
x = 10 + y; //Válido!
break;
}
Agora experimente colocar as chaves nos blocos e vc vai ver que a linha válida deixará de ser.
P
pardal_nb
ViniGodoy:
pardal_nb:
Aproveitando…qual a diferença de eu usar { }dentro do case ou nao?
A diferença está no escopo das variáveis.
Se você não usar as chaves, as variáveis terão visibilidade do ponto onde elas são declaradas, até o final do switch.
Se você usar as chaves, as variáveis só valem dentro das chaves.
Exemplo:
int x = 10;
switch (x) {
case 1:
int y = 10;
x = y;
break;
case 2:
y = 5; //Válido!
x = 10 + y; //Válido!
break;
}
Agora experimente colocar as chaves nos blocos e vc vai ver que a linha válida deixará de ser.
uhmmmmmmm…
vlw, obrigado!!
jMacaxera
Interessante este esquema das chaves internas ao case! =)
Marky.Vasconcelos
Mark, o case aceita char, int, constante, enum…
[]'s
Sendo mais especifico então faltou o byte, e para enums em um caso bem implementado chega ser inutil o switch
Eu tava procurando um exemplo que o ViniGodoy me deu a um bom tempo mas não achei, da uma ideia de como implementar melhor enumerações.
Se eu achar eu posto.