Bom dia a todos, sou novo no mundo java e no forum. Estou com uma dúvida.
O código é o seguinte:
importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassLista{publicstaticvoidmain(String[]args){ArrayList<String>lista=newArrayList<String>();Stringname;do{name=JOptionPane.showInputDialog("Digite um nome");if(name!="sair"){lista.add(name);System.out.println(lista);}}while(name!="sair");}}
Eu esperava que o programa fosse encerrado ao digitar “sair”,
mas isso não acontece.
O que ocorre?
== e != são operadores de comparação para tipos primitivos.
Como toda String é um objeto da classe String, isso implica que nenhuma String é primitivo.
Assim sendo, você não pode comparar Strings fazendo isso
name!="sair"
Você precisa usar o método equals…
TerraSkilll
Sua pergunta não tem nada a ver com ArrayList, não entendi por que colocou no título da pergunta.
Strings devem ser comparadas utilizando-se equals(). No seu código, ficaria:
importjava.util.ArrayList;importjavax.swing.JOptionPane;publicclassLista{publicstaticvoidmain(String[]args){ArrayList<String>lista=newArrayList<String>();Stringname;do{name=JOptionPane.showInputDialog("Digite um nome");if(!name.equals("sair")){lista.add(name);System.out.println(lista);}}while(!name.equals("sair"));}}
Note que, se for digitado algo diferente de sair (tudo em minúsculo), a comparação falhará. Por isso, recomendo optar pelo equalsIgnoreCase(), que compara ignorando se as letras são maiúsculas ou minúsculas ("Sair" é igual a "saIR", e assim por diante):
do{name=JOptionPane.showInputDialog("Digite um nome"); if(!name.equalsIgnoreCase("sair")){lista.add(name);System.out.println(lista);}}while(!name.equalsIgnoreCase("sair")); }
Abraço.
regis_hideki
TerraSkilll:
Outra coisa, a linha:System.out.println(lista); Provavelmente não faz o que você espera que ela faça. (imprimir a lista).
Faz sim. Não faria se fosse com Array.
TerraSkilll
regis_hideki:
TerraSkilll:
Outra coisa, a linha:System.out.println(lista); Provavelmente não faz o que você espera que ela faça. (imprimir a lista).
Faz sim. Não faria se fosse com Array.
Opz, erro meu. Acho que tomei muito sol ontem… Valeu, vou editar.