Pessoal não Consigo identificar o erro nesse código:
Stringnome="Raniel";switch(nome.hashCode()){
case"Raniel".hashCode():System.out.println("O nome é Raniel");break;case"Vitor".hashCode():System.out.println("O nome é Vitor");break;default:System.out.println("Default");}
Dá um erro de compilação, porque a cláusula ‘case’ requer uma constante, e mesmo que você saiba o valor de “Raniel”.hashCode(), o compilador não sabe disso e rejeita essa construção. Se quiser usar isso (que não recomendo, porque pode haver duas strings com mesmo hashcode), calcule esses valores antes na mão (ou seja, escrevendo um pequeno programa que calcule esses valores), e ponha esses valores no seu programa.
drsmachado
Nem nós conseguiremos adivinhar o que é gerado no stackTrace
O entanglement , que não sabe brincar, já respondeu essa.
ViniGodoy
Solução a)
Substitua por um if (fica até mais legível):
String nome = "Raniel";
int hashNome = nome.hashCode();
if (hashNome == Raniel".hashCode()) {
System.out.println("O nome é Raniel");
} else if (hashNome == "Vitor".hashCode()) {
System.out.println("O nome é Vitor");
}
Solução b) use um map:
Map<Integer, String> hashNome = new HashMap<Integer, String>();
hashNome.put("Raniel".hashCode(), "Raniel");
hashNome.put("Vitor".hashCode(), "Vitor");
String nome = "Raniel";
System.out.println("O nome é " + hashNome.get(nome.hashCode());