Ola, queria saber por que o loop fica infinito.
alguem sabe?
Leandro,
essa é a velha dúvida de comparação de String.
Em instâncias de classe quando usamos os operadores == e != não estamos comparando o conteúdo, mas sim se as referências das instâncias são iguais. A maior dúvida acontece por que esses operadores funcionam bem com tipos primitivos (int, por exemplo).
Para comparar conteúdo de String, use o método “equals” que já tem na classe String. Só alterar isso no seu código:
while(!"Sair".equals(s))
//Tinha um erro ae, ajustado
porque não se pode usar == para comparação entre Objetos, apenas para tipos primitivos (int, float, double…)
Para objetos, use a função equals:
while ( !)s.equals(“Sair”)
O == compara referencia na memória, ou seja, se os dois são a mesma instância. por isso não funciona…
Lembre-se:
String a = new String(“abc”);
String b = new String(“abc”);
if ( b != a ) System.out.println(“diferentes”);
Porém:
String a = new String(“abc”);
String b = a;
if ( b == a ) System.out.println(“iguais”);
Agora deu certo!
valews
8)