Switch case

12 respostas
L

Olá,

Não posso utilizar o switch case assim?

String otipo = leConfiguracao[0];

switch (otipo.hashCode()) {

case PerguntaFechadaSimples.hashCode() : System.out.println(a Pergunta é Fechada Simples);

break;

case PerguntaAbertaSimples.hashCode() : System.out.println(a Pergunta é Aberta Simples);

break;

case PerguntaFechadaMultipla.hashCode() : System.out.println(a Pergunta é Fechada Multipla);

break;

case PerguntaAbertaMultipla.hashCode() : System.out.println(a Pergunta é Aberta Múltipla);

break;

}

12 Respostas

otaviojava

E uma maneira interessante.

No java 7 já poderá utilizar o swit com String

A

Olá,
se não me engano você só deve comparar tipos inteiros e você está comparando String…

A

otaviojava:
E uma maneira interessante.

No java 7 já poderá utilizar o swit com String

oh… não tinha visto que já havia uma resposta hehehe…
abraço,

otaviojava

andredecotia:
Olá,
se não me engano você só deve comparar tipos inteiros e você está comparando String…

Ele não está usando a String.
repare que ele está pegando o hascode no swit case

A

http://inebium.com/post/java-7-new-release-performance-code

Dei uma curiada nas novas funcionalidades do Java 7… Vide link acima, engloba sua dúvida, a Java 7 já prevê essa deficiencia na linguagem…

Adelar

Idéia interessante. Mas há a possibilidade de strings diferentes terem o mesmo hash (é remota, mas existe).

[]'s

L

blz então galera, espero que no 7 isso venha resolvido.

[]s.

E

Adelar:
Idéia interessante. Mas há a possibilidade de strings diferentes terem o mesmo hash (é remota, mas existe).

[]'s

A possibilidade e’ realmente grande, basta ver a lista de palavras que tem hashes iguais.

Adelar

[quote=entanglement]

Adelar:
Idéia interessante. Mas há a possibilidade de strings diferentes terem o mesmo hash (é remota, mas existe).

[]'s

A possibilidade e’ realmente grande, basta ver a lista de palavras que tem hashes iguais.


Valeu pelo link. Não tinha uma lista de colisões. :smiley:

L

agora estou tentando com IF e também não está funcionando. O que tem de errado?

String otipo = leConfiguracao[0]; if (otipo=="PerguntaFechadaSimples"){ System.out.println("a Pergunta é Fechada Simples"); } if (otipo=="PerguntaAbertaSimples"){ System.out.println("a Pergunta é Aberta Simples"); } if (otipo=="PerguntaFechadaMultipla"){ System.out.println("a Pergunta é Fechada Multipla"); } if (otipo=="PerguntaAbertaMultipla"){ System.out.println("a Pergunta é Aberta Múltipla"); }

Adelar

Quando for comparar Strings utilize os métodos compareTo() ou equals() da classe String. Segue como se utiliza as duas formas:

String otipo = leConfiguracao[0]; if (otipo.compareTo("PerguntaFechadaSimples")==0){ System.out.println("a Pergunta é Fechada Simples"); } if (otipo.equals("PerguntaAbertaSimples")){ System.out.println("a Pergunta é Aberta Simples"); } if (otipo.compareTo("PerguntaFechadaMultipla")==0){ System.out.println("a Pergunta é Fechada Multipla"); } if (otipo.equals("PerguntaAbertaMultipla")){ System.out.println("a Pergunta é Aberta Múltipla"); }

[]'s

L

OK, realmente “Errando e aprendendo”. Valeu! obrigado.

Criado 9 de fevereiro de 2011
Ultima resposta 9 de fev. de 2011
Respostas 12
Participantes 5