@Dfodani escreveu:
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
Mensagens: 1
Participantes: 1