Problema Loop While JOptionPane

3 respostas
leandroageu

Ola, queria saber por que o loop fica infinito.

alguem sabe?

3 Respostas

Jesuino_Master

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

O_Monge

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);
leandroageu

Agora deu certo!

valews
8)

Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 3
Participantes 3