1
resposta

Duvida em Listar Clientes em uma ArrayList

Amigos, estou tentando fazer um sisteminha de cadastro de clientes, onde possui um menu com escolhas como cadastrar, alterar, listar, remover e etc...

Quando cadastro 2 clientes na lista, e quando vou listar os clientes cadastrados, ele repete a lista com o ultimo cliente cadastrado...

ackage br.com.bruno.modelo.programa;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Scanner;

import br.com.bruno.modelo.Cliente;

public class TestaMain {

    private static void menu() {
        System.out.println("       -------------------------------------------------------------------");
        System.out.println("        C A D A S T R O   D E    C L I E N T E S");
        System.out.println("            1 - CADASTRAR");
        System.out.println("            2 - ALTERAR");
        System.out.println("            3 - EXCLUIR");
        System.out.println("            4 - EXIBIR TODOS OS CLIENTES");
        System.out.println("       -------------------------------------------------------------------");
    }

    public static void main(String[] args) {

        Scanner entrada = new Scanner(System.in);
        Collection<Cliente> listaDeClientes = new ArrayList<Cliente>();
        Cliente clientes = new Cliente();
        int opcao;

        do {
            menu();
            System.out.println("Digite a opção desejada: ");
            opcao = entrada.nextInt();

            switch (opcao) {
            case 1:
                System.out.println("Digite o nome do Cliente!");
                clientes.setNome(entrada.next());

                System.out.println("Endereço");
                clientes.setEndereco(entrada.next());

                System.out.println("CPF");
                clientes.setCpf(entrada.next());

                System.out.println("Nome da empresa");
                clientes.setNomeEmpresa(entrada.next());

                System.out.println("Digite a data de nascimento: ");
                clientes.setDataNascimento(entrada.next());

                System.out.println("Digite o salario");
                clientes.setSalario(entrada.nextDouble());

                listaDeClientes.add(clientes);
                break;

            case 2:

                for (Cliente cliente : listaDeClientes) {
                    System.out.println(clientes);
                }

            default:
                System.out.println("Opção Invalida!");
                break;
            }
        } while (opcao != 0);
    }

}
package br.com.bruno.modelo;

import java.util.Calendar;

public class Cliente {

    private String nome;
    private String endereco;
    private String cpf;
    private String dataNascimento;
    private String nomeEmpresa;
    private double salario;

    @Override
    public String toString() {
        return "Nome: " + this.nome + "\nEndereço: " + this.endereco + "\nCPF: " + this.cpf + "\nData de nascimento: "
                + this.dataNascimento + "\nNome da Empresa: " + nomeEmpresa + "\nSalario: " + this.salario + "\n";
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(String string) {
        this.dataNascimento = string;
    }

    public String getNomeEmpresa() {
        return nomeEmpresa;
    }

    public void setNomeEmpresa(String nomeEmpresa) {
        this.nomeEmpresa = nomeEmpresa;
    }

    public double getSalario() {
        return salario;
    }

    public void setSalario(double salario) {
        this.salario = salario;
    }

}
1 resposta

Essa linha:

Cliente clientes = new Cliente();

Tem que ficar dentro do seu case. Para vc instanciar um novo a cada escolha.