Problema com switch

10 respostas
java

Estou com um entrave no controle de fluxo usando o switch como em outras linguagens é possível ?agrupar? mais de uma ocorrência em um mesmo case, mas no Java não estou conseguindo fazer isso, já procurei em diversos lugares este informação e até a gora nada.

O que estou querendo fazer é isso:

switch (strvalor) {
case '0','1','2' ,'3' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9':

break;

case '+','-':

break;
}

mas não funciona, sera que só tem como fazer isso com IF´s?

se alguém puder ajudar... agradeço!
:roll:

10 Respostas

diego2005

Em um mesmo case não é possível, mas você pode fazer o seguinte:

int x = 2; switch(x) { case 0: case 1: case 2: System.out.println("x igual a 0, 1 ou 2"); break; case 3: case 4: System.out.println("x igual a 3 ou 4"); break; case 5: System.out.println("x igual a 5"); break; }

T+

G

se essse strvalor for uma string, esquece… switch nao funciona para objetos

Eduardo_Bregaida

quase certeza q isso é uma string p/ receber + e - rs fora o nome str = String :smiley:
Não vai funfar assim, mete if e equals :smiley:

brothermclaud

Como bem disse o Gustavo:

o Switch/Case só funciona para valores inteiros. Se vc quiser fazer verificação de um String ou char, vai ter de usar o if/else mesmo

diego2005

Pra char funciona sim. E também pra enum…

java

strvalor na verdade é um char…

diego2005, entaum na verdade o switch (select case) do java deixou a desejar não acha?

peczenyj

Eu acho que vc deveria aprender expressões regulares.

O que vc quer fazer ficará muito mais fácil e inteligível.

diego2005

Pode ser que sim, o máximo que você terá que fazer é digitar um pouco mais.

Em algumas linguagens podemos fazer assim:

case 1, 2, 3: ...

O que em Java seria:

case 1: case 2: case 3: ... break;

T+

Thiago.Oliver

brothermclaud wrote:

Na verdade, o char no fundo é um int…

davidbuzatto

Thiago.Oliver:

Na verdade, o char no fundo é um int…

O char não é um int não…

O char é uma representação de um valor numérico sim, mas ele não tem sinal (só valores positivos) e é equivalente a um byte (tipo primitivo) sem sinal se não me engano…

Até mais!

Criado 26 de julho de 2007
Ultima resposta 26 de jul. de 2007
Respostas 10
Participantes 8