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;
}
}
Error description indicates problem:
this.dadosProf
is thenull
when it should not, at the time it carries out the instructionadd
– Isac
This answers your question? What is Nullpointerexception and what are its main causes?
– Isac