Estou tentando criar uma lista genérica de clientes, onde posso adicionar pessoasFisicas e pessoasJuridicas.
Dentro da classe clientes possuo os atributos nome, lista de endereços e limite de crédito.
A classe pessoaFisica herda de cliente os atributos acima citados além de possuir o atributo cpf.
A classe pessoaJuridica herda de cliente seus atributos e possui também, nomeFantasia e cnpj.
O problema que está acontecendo é o seguinte: na hora que cadastro mais de uma pessoa física por exemplo e puxo o relatório, me vem a lista de endereços inteira ao invés de vim a lista da pessoa de cada posição do ArrayList de clientes. Como resolvo isso?
public void cadastrar() {
int op, resp;
System.out.println("\n==[Cadastro de clientes]==");
System.out.println(“Digite 1 para cadastrar pessoa fisica.”);
System.out.println(“Digite 2 para cadastrar pessoa juridica.”);
System.out.print("=> ");
op = input.nextInt();
switch (op) {
case 1:
System.out.println("\n==[Pessoa fisica]==");
System.out.print("Informe o nome: ");
nome = inputs.nextLine();
do {
listaEndFisica.add(retornaUmEndereco());
System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não");
resp = input.nextInt();
} while (resp != 0);
System.out.print("Informe o limite de crédito: ");
limiteCredito = input.nextDouble();
System.out.print("informe o cpf: ");
cpf = inputs.nextLine();
PessoaFisica pessoaFisica = new PessoaFisica(nome, listaEndFisica, limiteCredito, cpf);
listaCliente.add(pessoaFisica);
System.out.println("\nPessoa fisica adicionado com sucesso! ");
break;
case 2:
System.out.println("\n==[Pessoa Juridica]==");
System.out.print("Informe o nome: ");
nome = inputs.nextLine();
do {
listaEndJuridica.add(retornaUmEndereco());
System.out.println("Continuar cadastrando endereços? 1-Sim/0-Não");
resp = input.nextInt();
} while (resp != 0);
System.out.print("Informe o limite de crédito: ");
limiteCredito = input.nextDouble();
System.out.print("Informe o nome fantasia: ");
nomeFantasia = inputs.nextLine();
System.out.print("Informe o cnpj: ");
cnpj = inputs.nextLine();
PessoaJuridica pessoaJuridica = new PessoaJuridica(nome, listaEndJuridica, limiteCredito, nomeFantasia, cnpj);
listaCliente.add(pessoaJuridica);
System.out.println("\nPessoa juridica adicionado com sucesso! ");
break;
default:
System.out.println("opção inválida! ");
}
}
public void relatorio() {
if (listaCliente.isEmpty()) {
System.out.println(“Não existem clientes cadastrados! “);
} else {
for (Cliente c : listaCliente) {
if (c instanceof PessoaFisica) {
System.out.println(”\n-=[Pessoas Fisicas]=-”);
System.out.println(“Nome: " + c.getNome());
System.out.println(”-=[Endereço(s) Associado(s)]<-");
for (Endereco end : listaEndFisica) {
System.out.println("Logradouro: " + end.getLogradouro());
}
System.out.println("Limite de crédito: " + c.getLimiteDeCredito());
System.out.println("Cpf: " + ((PessoaFisica) c).getCpf());
} else if (c instanceof PessoaJuridica) {
System.out.println("\n-=[Pessoas Juridicas]=-");
System.out.println("Nome: " + c.getNome());
System.out.println("-=[Endereço(s) Associado(s)]<-");
for (Endereco end : listaEndJuridica) {
end.getLogradouro();
System.out.println("Logradouro: " + end.getLogradouro());
}
System.out.println("Limite de crédito: " + c.getLimiteDeCredito());
System.out.println("Nome fantasia: " + ((PessoaJuridica) c).getNomeFantasia());
System.out.println("Cnpj: " + ((PessoaJuridica) c).getCnpj());
}
}
}
}