Switch case

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;
}

E uma maneira interessante.

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

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

[quote=otaviojava]E uma maneira interessante.

No java 7 já poderá utilizar o swit com String
[/quote]

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

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

[/quote]

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

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…

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

[]'s

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

[]s.

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

[]'s[/quote]

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

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

[]'s[/quote]

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:

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"); }

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

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