"Nullpointerexception" error is null

Asked

Viewed 57 times

0

I have created a student and teacher registration program. You have a List option as well. However, when I go to register the teacher he gives the following error

"Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "this.dadosProf" is null
    at exercicioEstrutura.Main.cadastrarProf(Main.java:70)
    at exercicioEstrutura.Main.<init>(Main.java:35)
    at exercicioEstrutura.Main.main(Main.java:16)"

And to list all the teachers, he makes the following mistake.

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.util.List.size()" because "this.dadosProf" is null
    at exercicioEstrutura.Main.listarCadastroProf(Main.java:126)
    at exercicioEstrutura.Main.<init>(Main.java:37)
    at exercicioEstrutura.Main.main(Main.java:16)

I would like to know why these mistakes, and the registration and list of students does not occur this.

Code:

    public class Main {
    
        private Scanner l;
        private boolean execute;
        private List<Dados> dados;
        private List<DadosProfessor> dadosProf;
    
        public static void main(String[] args) {
            new Main();
        }
    
        private Main() {
            l = new Scanner(System.in);
            execute = true;
            dados = new ArrayList<Dados>();
    
            System.out.println(""
                    + "============BEM VINDO==========");
    
            while (execute) {
                String opcao = menu();
    
                if (opcao.equalsIgnoreCase("1")){
                    cadastrar();
                } else if (opcao.equalsIgnoreCase("2")) {
                    listarCadastros();
                } else if (opcao.equalsIgnoreCase("3")) {
                    cadastrarProf();
                } else if (opcao.equalsIgnoreCase("4")) {
                    listarCadastroProf();
                } else if (opcao.equalsIgnoreCase("5")) {
                    execute = false;
                } else {
                    System.out.println("\nOpção Inválida!\n");
                }
            }
        }
    
        private String menu() {
            System.out.println("=========SISTEMA DE CADASTRO==========");
            System.out.println("Selecione a opção:");
            System.out.println("1 - Novo cadastro de Aluno");
            System.out.println("2 - Listar Cadastros de Alunos");
            System.out.println("3 - Novo Cadastro de Professor");
            System.out.println("4 - Listar Cadastros de Professores");
            System.out.println("5 - Sair");
            return l.nextLine();
        }
    
        private void cadastrarProf() {
            boolean cadastrandoProf = true;
    
            while (cadastrandoProf) {
                System.out.println("Cadastro de Professor");
                DadosProfessor prof = new DadosProfessor();
                prof.setNome(textInput("Nome:"));
                prof.setUc(textInput("Disciplina: "));
                prof.setEmail(textInput("Email: "));
    
                String cadastrarProf = textInput("Adicionar cadastro (S/N) ?");
                if (cadastrarProf.equalsIgnoreCase("s")) {
                    System.out.println("Cadastro adicionado !!!");
                    dadosProf.add(prof);
                } else if (cadastrarProf.equalsIgnoreCase("n")) {
                    System.out.println("Cadastro ignorado !!!");
                } else {
                    System.out.println(
                            "\nOpção inválida\n");
                }
    
                String continuaProf = textInput("Continuar cadastrando (S/N) ?");
                if (continuaProf.equalsIgnoreCase("N")) {
                    cadastrandoProf = false;
                } else if (continuaProf.equalsIgnoreCase("s")) {
                    // se for s sai do if e volta para o inicio do while
                } else {
                    System.out.println("\nOpção inválida\n");
                    cadastrandoProf = false;
                }
            }
        }
    
        private void cadastrar() {
            boolean cadastrando = true;
    
            while (cadastrando) {
                System.out.println("Cadastro de Usuário");
                Dados d = new Dados();
                d.setNome(textInput("Nome:"));
                d.setMatricula(textInput("Matricula: "));
                d.setEmail(textInput("Email: "));
    
                String cadastrar = textInput("Adicionar cadastro (S/N) ?");
                if (cadastrar.equalsIgnoreCase("s")) {
                    System.out.println("Cadastro adicionado !!!");
                    dados.add(d);
                } else if (cadastrar.equalsIgnoreCase("n")) {
                    System.out.println("Cadastro ignorado !!!");
                } else {
                    System.out.println(
                            "\nOpção inválida seu noob, vou ignorar o cadastro só pra você ter que digitar denovo !!! \n");
                }
    
                String continua = textInput("Continuar cadastrando (S/N) ?");
                if (continua.equalsIgnoreCase("N")) {
                    cadastrando = false;
                } else if (continua.equalsIgnoreCase("s")) {
                    // se for s sai do if e volta para o inicio do while
                } else {
                    System.out.println("\nOpção inválida seu noob, eu vou sair só porque você não colabora !!! \n");
                    cadastrando = false;
                }
            }
        }
        
        private void listarCadastroProf() {
            
            
            if (dadosProf.size() == 0) {
                System.out.println("\nNão existem cadastros de nenhum Professor!\n");
            } else {
                System.out.println("\nLista de Cadastros de Professores\n");
                for (int i = 0; i < dadosProf.size(); i++) {
                    DadosProfessor prof = dadosProf.get(i);
                    System.out.println("Cadastro número: " + i);
                    System.out.println("\tNome: " + prof.getNome());
                    System.out.println("\tLogin: " + prof.getUc() );
                    System.out.println("\tCargo: " + prof.getEmail() + "\n");
                }
                System.out.println("\n===FIM DA LISTA===\n");
            }
        }
        
    
        private void listarCadastros() {
            if (dados.size() == 0) {
                System.out.println("\nNão existem cadastros !!!\n");
            } else {
                System.out.println("\nLista de Cadastros\n");
                for (int i = 0; i < dados.size(); i++) {
                    Dados d = dados.get(i);
                    System.out.println("Cadastro número: " + i);
                    System.out.println("\tNome: " + d.getNome());
                    System.out.println("\tLogin: " + d.getMatricula());
                    System.out.println("\tCargo: " + d.getEmail() + "\n");
                }
                System.out.println("\nFim da lista\n");
            }
        }
        
    
        private String textInput(String label) {
            System.out.println(label);
            return l.nextLine();
        }
    }

public class Dados {

    private String nome;
    private String matricula;
    private String email;
    private Integer idade;

    public Dados() {}
    

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matri) {
        matricula = matri;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String name) {
        nome = name;
    }

    public String getEmail() {
        return email;
    }
    
    public void setEmail(String em) {
        email = em;
    }

    public Integer getIdade() {
        return idade;
    }

    public void setCargo(Integer id) {
        idade = id;
    }

}


public class DadosProfessor {

    private String nome;
    private String uc;
    private String email;
    
    
    public DadosProfessor() {}
    

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    
    public String getUc() {
        return uc;
    }
    public void setUc(String uc) {
        this.uc = uc;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }

    
}

1 answer

0

Declare a list with no elements (empty) instead of just declaring the list, in the case of Data.

Like you did:

private List<DadosProfessor> dadosProf;

How can it be done:

private List<DadosProfessor> dadosProf = new ArrayList<DadosProfessor>();

Or do what you did with the dados:

dados = new ArrayList<Dados>();
dadosProf = new ArrayList<DadosProfessor>();

Read also: Main Causes of Nullpointerexception

Browser other questions tagged

You are not signed in. Login or sign up in order to post.