Olá pessoal. Eu gostaria de ajuda no meu código. Estou praticando o que aprendi no curso e meu código não está imprimindo o contato apenas. Podem me ajudar?Agenda.rtf (1,1,KB) Contatos.rtf (997,Bytes) Principal.rtf (2,0,KB)
Por favor, copie o código em que vc está com dúvidas e cole-o aqui diretamente. Não coloque-os em arquivos e anexe no post (ainda mais como RTF).
Veja um exemplo:
public class ClasseA {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
package view;
import java.util.Scanner;
import model.Agenda;
import model.Contatos;
public class AgendaTelefônica {
static Scanner s=new Scanner(System.in);
static int n=0;
static String nome,numero;
Agenda a1=new Agenda();
Contatos cont2;
public static void main(String[] args) {
AgendaTelefônica at=new AgendaTelefônica();
at.menu();
}
private void menu(){
System.out.println("*******************************");
System.out.println("********AGENDA TELEFÔNICA*********");
System.out.println("*******************************");
System.out.println("Ver agenda-----1");
System.out.println("Ver Contato-----2");
System.out.println("Adicionar Contato-----3");
System.out.println("Sair-----0");
int n=Integer.parseInt(s.nextLine());
switch(n){
case 1:
a1.imprimeAgenda();
menu();
break;
case 2:
System.out.println("digite o nome:");
nome=s.nextLine();
a1.imprimeContato(nome);
menu();
break;
case 3:
System.out.println("Escreva o nome:");
nome=s.nextLine();
System.out.println("Escreva o número:");
numero=s.nextLine();
cont2=new Contatos(nome,numero);
a1.adicionaAgenda(cont2);
System.out.println("Adicionado com sucesso!");
menu();
break;
case 0:System.exit(0);
}
}
}
// System.out.println();
o problema está em ver contato.Agradeço sua ajuda!
Que problema?
Não imprime o ver contato. Quer que eu lhe envie as outras classes?
Como está o código desse método: a1.imprimeContato(nome); ?
Fiz de várias formas. Mas acho que essa também esta errada.
public void imprimeContato(String nome){
if(contatos.contains(c0.getNome().equalsIgnoreCase(nome))){
System.out.println(c0);
}else{
System.out.println("esse contato não percente a agenda.");
}
}
Essa é a classe agenda
package model;
import java.util.LinkedList;
import java.util.List;
public class Agenda {
public Agenda() {
}
List<Contatos> contatos=new LinkedList<Contatos>();
Contatos c0=new Contatos();
public void adicionaAgenda(Contatos contato){
contatos.add(contato);
}
public void imprimeAgenda(){
for(Contatos c:contatos){
System.out.println(c);
}
}
public void imprimeContato(String nome){
if(contatos.contains(c0.getNome().equalsIgnoreCase(nome))){
System.out.println(c0);
}else{
System.out.println("esse contato não percente a agenda.");
}
}
}
Esse IF está estranho.
Se vc quer verificar se há, na lista de contatos, um contato com um determinado nome, vc deve filtrar a lista:
for (Contato contato : contatos) {
if (contato.getNome().equalsIgnoreCase(nome) {
// encontrou o contato
return;
}
}
// Se saiu do for, significa que não encontrou o contato
Se vc estiver uma versão mais recente do java (java 8+):
Optional<Contato> contato = contatos.stream()
.filter(c -> c.getNome().equalsIgnoreCase(nome))
.findFirst();
if (contato.isPresent()) {
// encontrou o contato
} else {
// não encontrou o contato
}
Muito obrigada! Usei a versão java 8 que você colocou. Valeu!!