Prezados estou com um problema, estou cadastrando um nome e mail, e preciso fazer uma busca apenas pelo nome, e que me retorne o nome e o email.
estou usando duas classes, Contato que possui os dois atributos: nome e mail.
e a classe Agenda.
public class Agenda {
ArrayList<Contato>listaCont;publicAgenda(){listaCont=newArrayList<>();}voidAdicionarContato(StringnomeCon,StringemailCon){Contatocon=newContato(nomeCon,emailCon);listaCont.add(con);}voidBuscarContato(){Scannerent=newScanner(System.in);StringnomeBus;System.out.println("Buscar Contato por Nome: ");nomeBus=ent.next();//Iterator it = listaCont.for(inti=0;i<listaCont.size();i++){if(listaCont.get(i).getNomeCon().equalsIgnoreCase(nomeBus)){System.out.println(listaCont.get(i).getNomeCon());}else{System.out.println("Sem Cadastro!");}}}
Scannerent=newScanner(System.in);StringnomeBus;System.out.println("Buscar Contato por Nome: ");nomeBus=ent.next();ContatocontatoRetorno=null;for(Contatocontato:listaCont){if(contato.getNomeCon().equals(nomeBus)){contatoRetorno=contato;break;}}if(contatoRetorno!=null){System.out.println("Nome: "+contatoRetorno.getNomeCon()+"\nEmail: "+contatoRetorno.getEmailCon());}else{System.out.println("Sem Cadastro!");}}
V
viniciosarodrigues
if(contato.getNomeCon().equals(nomeBus)
Troca por isso pra vê se funciona…
if(contato.getNomeCon().equalsIgnoreCase(nomeBus)
A
Aristofanes89
Não funcionou, como se a lista não estivesse nada.
V
viniciosarodrigues
Pode parecer uma pergunta besta, mas você está adicionando o contato antes de tentar buscar? Pois cada vez que você roda a aplicação, a lista é zerada, então você tem que adicionar sempre que rodar a aplicação.
A
Aristofanes89
kkkk, tudo é valido, estou sim inserindo, na classe contato tem um Metodo Listar e funciona direitnho.
V
viniciosarodrigues
Achei o problema! kkkk
Na hora que você adiciona você está adicionando em uma lista diferente da agenda
ent.nextLine();System.out.println("Nome do Contato: ");nome=ent.nextLine();System.out.println("E-mail do contato: ");email=ent.nextLine();Contatocontato=newContato(nome,email);-->listaContato.add(contato);<--System.out.println("\n** Contato Cadastrado **\n");
Você precisa adicionar o item da lista da agenda, e não o arraylist que você criou depois.
V
Solucao aceita
viniciosarodrigues
Fica assim:
ent.nextLine();System.out.println("Nome do Contato: ");nome=ent.nextLine();System.out.println("E-mail do contato: ");email=ent.nextLine();Contatocontato=newContato(nome,email);agenda.AdicionarContato(contato);System.out.println("\n** Contato Cadastrado **\n");
A
Aristofanes89
Creio que vá funcionar desse modo, só que o método AdicionarContato() recebe dois parâmetros e desse jeito ele esta levando apenas 1.
Pra excluir é o mesmo esquema do buscar, porém, você tem que lembrar que nome não é chave única, se você tiver mais de um nome repetido, ele apagará o primeiro que encontrar