Ola estou fazendo um exercicio de orientaçao a objeto e gostaria de saber porque esta dando este erro e porque esta passando objeto nulo pois nao consegui enxergar alguem me ajuda?
classe matricula
package br.com.fabricadeprogramador.exerc1;
import java.util.Date;
public class Matricula {
private Integer codigo;
private Date data;
private Curso curso;
private Aluno aluno;
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso curso) {
this.curso = curso;
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
}
Classe Aluno
package br.com.fabricadeprogramador.exerc1;
public class Aluno extends Matricula{
private String nome;
private String cpf;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
}
Classe Curso
package br.com.fabricadeprogramador.exerc1;
public class Curso extends Matricula {
private String nome;
private Integer cargahoraria;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Integer getCargahoraria() {
return cargahoraria;
}
public void setCargahoraria(Integer cargahoraria) {
this.cargahoraria = cargahoraria;
}
}
Classe que uso para fazer o metodo imprimir e cadastrar
package br.com.fabricadeprogramador.exerc1;
public class GerenciadorMatricula {
Matricula pessoas[] = new Matricula[3];
int numEntradas = 0;
public void cadastrar(Matricula nova) {
if (numEntradas < pessoas.length) {
pessoas[numEntradas] = nova;
numEntradas++;
}
}
public void imprimir() {
for (int i = 0; i < pessoas.length; i++) {
System.out.println("Código: " + pessoas[i].getCodigo() + ", Data: " + pessoas[i].getData() + ", Curso: " + pessoas[i].getCurso() + ", Aluno: " + pessoas[i].getAluno());
if(pessoas[i] instanceof Aluno){
System.out.println("Nome: " + ((Aluno)pessoas[i]).getNome()+"Cpf:" + ((Aluno)pessoas[i]).getCpf());
}else if(pessoas[i] instanceof Curso){
System.out.println("Nome do Curso: " + ((Curso)pessoas[i]).getNome()+"Carga Horária:" + ((Curso)pessoas[i]).getCargahoraria());
}
}
}
}
Classe principal
package br.com.fabricadeprogramador.exerc1;
import java.util.Scanner;
public class ProgramaPrincipalMatricula {
public static void main(String[] args) {
GerenciadorMatricula gerenciador = new GerenciadorMatricula();
Scanner scan = new Scanner(System.in);
Aluno a = new Aluno();
System.out.println("Digite o nome do aluno");
a.setNome(scan.nextLine());
System.out.println("Digite o cpf do aluno");
a.setCpf(scan.nextLine());
Curso c = new Curso();
System.out.println("Digite o nome do curso");
c.setNome(scan.nextLine());
System.out.println("Digite a carga horária");
c.setCargahoraria(scan.nextInt());
gerenciador.cadastrar(a);
gerenciador.cadastrar(c);
gerenciador.imprimir();
}
}
alguem me ajuda?
erro:
Digite o nome do aluno
carlos
Digite o cpf do aluno
837894
Digite o nome do curso
historia
Digite a carga horária
7
Exception in thread “main” java.lang.NullPointerException
at br.com.fabricadeprogramador.exerc1.GerenciadorMatricula.imprimir(GerenciadorMatricula.java:18)
at br.com.fabricadeprogramador.exerc1.ProgramaPrincipalMatricula.main(ProgramaPrincipalMatricula.java:29)
Código: null, Data: null, Curso: null, Aluno: null
Nome: carlosCpf:837894
Código: null, Data: null, Curso: null, Aluno: null
Nome do Curso: historiaCarga Horária:7