é possivél fazer um switch case com string?
http://www.guj.com.br/posts/list/16759.java
http://javafree.uol.com.br/artigo/849908/Maneiras-de-fazer-Switch-em-uma-variavel-String.html
Serve?
String nome = "Vitor";
switch (nome.hashcode()) {
case "Vitor".hashCode() : System.out.println("Valor de nome é Vitor");
break;
case "Paulo".hashCode() : System.out.println("Valor de nome é Paulo");
break;
default: System.out.println("Default");
}
Vlw Henrique muito obrigado
tá dando o seguinte erro:
constant expression required
[quote=Algebra]tá dando o seguinte erro:
constant expression required[/quote]
Não é correto utilizar o hashCode() por que o valor do código de hash irá depender do valor da String, e isso não é constante.
Tente utilizar algum literal nos case’s. Ou alguma constante (primitivo declarado com modificador final).
Só a partir do Java 7.
http://blogs.sun.com/darcy/entry/project_coin_strings_in_switch
http://blogs.sun.com/darcy/entry/project_coin_string_switch_anatomy
http://blogs.sun.com/darcy/entry/project_coin_final_five
Cara, da de fazer um codigo dinamico usando hashmap…feio…mais pode te servir…
HashMap<String, Integer> caseHash = new HashMap<String, Integer>();
caseHash.put("testeA", 1);
caseHash.put("testeB", 2);
caseHash.put("testeC", 3);
String tuaChave = "teste";
switch (caseHash.containsKey(tuaChave) ? caseHash.get(tuaChave) : -1) {
case 1: {
break;
}
case 2: {
break;
}
case 3: {
break;
}
default:{
}
}
por favor thingol…não me mate
Usa um Enum
Vlws Thingol !
O aconselhavel eh usar constantes , ou Enun .
Lembrando que a maioria dos lugares ainda esta em java 5
sem falar nas inúmeras empresas que usam 1.4.
Atenção: switch em strings só funciona a partir do Java 7.
class TesteSwitch {
public static void main (String[] args) {
String s = "desprezível";
switch (s) {
case "desprezível":
System.out.println ("despicable"); break;
case "auréola":
System.out.println ("halo"); break;
case "fungo":
System.out.println ("fungus"); break;
case "fujão":
System.out.println ("fugitive"); break;
case "abstruso":
System.out.println ("abstruse"); break;
}
}
}
Isto foi compilado para o equivalente a (eu olhei os bytecodes, com auxílio do “javap”, para ver o que o compilador gerou):
class TesteSwitch {
public static void main (String[] args) {
String s = "desprezível";
int hashCode = s.hashCode();
int i = -1;
switch (hashCode) {
case -644512679: if (s.equals ("auréola")) i = 1; else if (s.equals("desprezível") i = 0; break;
case 97793703: if (s.equals ("fujão") i = 3; else if (s.equals("fungo") i = 2; break;
case 1732918561: if (s.equals ("abstruso") i = 4; break;
default: break;
}
switch (i) {
case 0: System.out.println ("despicable"); break;
case 1: System.out.println ("halo"); break;
case 2: System.out.println ("fungus"); break;
case 3: System.out.println ("fugitive"); break;
case 4: System.out.println ("abstruse"); break;
}
}
}
Diretamente não! Voce pode usar strings indiretamente como nos exemplos acima ou utilizar os mais recomendados: os Enuns.
Lembrando que enuns NÃO são strings.
vlw pelas dicas pessoal