4
respostas

[Dúvida] Criação de um cadastro na hora de listar o método não funciona, ajudem ai por favor

Essa é a classe repositorio.

public class RepositorioMembro implements InterfaceRepositorioMembro {

    List<Membro> repositorioMembro = new ArrayList<Membro>();

    @Override
    public void cadastrarMembro(Membro membro) {
        try{
            repositorioMembro.add(membro);
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public void alterarMembro(Membro membro) {
        try {
            for (Membro membro1 : repositorioMembro){
                if (membro1.getCpf().equals(membro.getCpf())){
                    repositorioMembro.remove(membro1);
                    repositorioMembro.add(membro);
                }
            }
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public void excluirMembro(String cpf) {
        try{
            for (Membro membro : repositorioMembro){
                if (membro.getCpf().equals(cpf)){
                    repositorioMembro.remove(cpf);
                }
            }
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public List<Membro> RepositorioMembro() {
        return this.repositorioMembro;
    }
}
4 respostas

Agora a classe de fazer os cadastros.

public class ServicoMembro implements InterfaceServicoMembro {

    List<Membro> listMembro = new ArrayList<Membro>();

    static RepositorioMembro repositorioMembro = new RepositorioMembro();

    @Override
    public void cadastroMembro() {
        try {
            Membro membro = new Membro();
            Endereco endereco = new Endereco();

            membro.setNome(JOptionPane.showInputDialog("Nome: "));
            membro.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Idade: ")));
            membro.setCpf(JOptionPane.showInputDialog("CPF: "));
            membro.setSexo(Sexo.valueOf(JOptionPane.showInputDialog("Sexo: ")));
            membro.setEndereco(endereco);

            endereco.setNomeDaRua(JOptionPane.showInputDialog("Nome da rua: "));
            endereco.setNumDaCasa(Integer.parseInt(JOptionPane.showInputDialog("Numero da casa: ")));
            endereco.setBairro(JOptionPane.showInputDialog("Bairro: "));
            endereco.setCidade(JOptionPane.showInputDialog("Cidade: "));
            endereco.setEstado(Estado.valueOf((JOptionPane.showInputDialog("Estado: "))));
            endereco.setPais(JOptionPane.showInputDialog("País: "));

            listMembro.add(membro);
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public void alterarMembro() {
        try {
            Membro membro = new Membro();
            Endereco endereco = new Endereco();

            membro.setNome(JOptionPane.showInputDialog("Nome: "));
            membro.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Idade: ")));
            membro.setCpf(JOptionPane.showInputDialog("CPF: "));
            membro.setSexo(Sexo.valueOf(JOptionPane.showInputDialog("Sexo: ")));
            membro.setEndereco(endereco);

            endereco.setNomeDaRua(JOptionPane.showInputDialog("Nome da rua: "));
            endereco.setNumDaCasa(Integer.parseInt(JOptionPane.showInputDialog("Numero da casa: ")));
            endereco.setBairro(JOptionPane.showInputDialog("Bairro: "));
            endereco.setCidade(JOptionPane.showInputDialog("Cidade: "));
            endereco.setEstado(Estado.valueOf(JOptionPane.showInputDialog(JOptionPane.showInputDialog("Estado: "))));
            endereco.setPais(JOptionPane.showInputDialog("País: "));

            repositorioMembro.alterarMembro(membro);
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public void excluirMembro() {
        try {
            repositorioMembro.excluirMembro(JOptionPane.showInputDialog("CPF: "));
        }catch (Exception exception){
            JOptionPane.showMessageDialog(null,"Erro: " + exception.getMessage());
        }
    }

    @Override
    public List<Membro> listMembro() {
            listMembro = repositorioMembro.RepositorioMembro();
            for (Membro membro : listMembro){
                JOptionPane.showMessageDialog(null,"\nNome: " + membro.getNome() +
                        "\nIdade: " + membro.getIdade() + "Sexo: " + membro.getSexo() + "CPF: " + membro.getCpf() +
                        "\nEndereço: " + membro.getEndereco().getNomeDaRua() + "\nN°: " + membro.getEndereco().getNumDaCasa() +
                        "\nBairro: " + membro.getEndereco().getBairro() + "\nCidade: " + "\nEstado: " + membro.getEndereco().getEstado() +
                        "\nPaís: " + membro.getEndereco().getPais());
            }
        return listMembro;
    }
}

Agora vem o problema o metodo de cadastrar funciona mais na hora de listar o metodo não é chamado.

public class TesteConta {
    public static void main(String[] args) {
        ServicoMembro membro = new ServicoMembro();
        membro.cadastroMembro();
        membro.listMembro();
    }
}

Oi Bruno! Tudo bem?

Acredito que o problema está em quando você faz listMembro = repositorioMembro.RepositorioMembro();, pois pode estar havendo uma confusão de tipos. No caso, o Java entende a variável repositorioMembro como do tipo RepositorioMembro, mas você quer que ela seja uma lista. Um construtor sempre retorna um objeto do tipo da sua classe, mesmo que seja sobrescrito.

O ideal seria criar um método chamado retornaMembros() no lugar do construtor do RepositorioMembro e deixar o construtor padrão. Depois, no método listMembro, você faria

public List<Membro> listMembro() {
            listMembro = repositorioMembro.retornaMembros();
            ...

Acho que assim vai funcionar! Espero ter ajudado!

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Bom dia Yasmin, eu ja mudei esse código um pouco pra ficar um pouco mais organizado, mais o problema persiste vou deixar o link do topico que postei se você poder dar uma olhada. https://cursos.alura.com.br/forum/topico-duvida-uso-de-list-nao-estou-conseguindo-listar-os-dados-cadastrados-274670

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software