Olá alguém poderia me ajudar na resolução desse exercício, estou adicionando as 3 classes que eu utilizo, ao tentar chamar o método mostrarDadosFuncionarios que seria pra mostrar dados do array funcionário que pertence a classe Empresa ela emite um NullpointerException .
public class Funcionario {
String nome;
String departamento;
double salario;
Data data;
String rg;
boolean estaNaEmpresa;
Empresa empresa;
void bonifica(double valor){
this.salario = (this.salario + valor);
}
double calculaGanhoAnual(){
double ganhoAnual;
ganhoAnual = (this.salario * 12);
return ganhoAnual;
}
void mostrarDados(){
System.out.println("=============== DADOS DO FUNCIONARIO =================");
System.out.println("NOME................: " + this.nome);
System.out.println("DEPARTAMENTO........: " + this.departamento);
System.out.println("SALARIO.............: " + this.salario );
System.out.println("DATA DE NASCIMENTO..: " + this.data.dia + "/" + this.data.mes + "/" + this.data.ano);
System.out.println("RG..................: " + this.rg);
System.out.println("SALARIO ANUAL.......: " + calculaGanhoAnual());
System.out.println("================= FIM =================================");
}
public class Empresa {
String nome;
Funcionario[] empregados;
String cnpj;
int qtdMaximaFunc = 0;
void adicionarFuncionario(Funcionario f){
if(this.qtdMaximaFunc > 2){
System.out.println("Não há mais espaços disponivel para adicionar novos funcionarios,limite maximo estourado");
}else{
this.empregados[qtdMaximaFunc]= f;
this.qtdMaximaFunc ++;
}
}
void mostrarDadosFuncionarios(){
if(qtdMaximaFunc <= 0){
System.out.println("Não há dados a serem mostrado");
}
for(int i=0; i < this.empregados.length; i++){
System.out.println("=================================================");
System.out.println(" DADOS DOS FUNCIONARIOS ");
System.out.println("=================================================");
System.out.println("Nome do Funcionario.............: " + this.empregados[i].nome);
System.out.println("Departamento....................: " + this.empregados[i].departamento);
System.out.println("Slario..........................: " + this.empregados[i].salario);
System.out.println("Data de Nascimento..............: " + this.empregados[i].data.dia + "/" + this.empregados[i].data.mes + "/" +
this.empregados[i].data.ano);
System.out.println("Rg..............................: " + this.empregados[i].rg);
System.out.println("Empresa.........................: " + this.nome);
System.out.println("CNPJ............................: " + this.cnpj);
System.out.println("===================================================");
System.out.println(" FIM ");
System.out.println("===================================================");
System.out.println(" ");
}
}
public class TesteFuncionario {
public static void main(String[] args) {
// instanciando empresa
Funcionario f1 = new Funcionario();
f1.nome = "Renato Barbosa dos Santos";
f1.departamento = "TI";
f1.rg = "29.842.908-1";
f1.salario = 2500;
f1.estaNaEmpresa = true;
// criando o objeto data apartir de um funcionario
f1.data = new Data();
f1.data.ano = 1984;
f1.data.mes = 05;
f1.data.dia = 22;
// instanciando empresa
Empresa empresa = new Empresa();
empresa.nome = "Spread Tecnologia";
empresa.cnpj = "123456798612";
empresa.empregados = new Funcionario[3];
f1 = empresa.empregados[0];
// chamando metodo adicionar fucionario 1
empresa.adicionarFuncionario(f1);
// lista todos funcionarios adicinados no array
empresa.mostrarDadosFuncionarios();
// instanciando outro objeto
Funcionario f2 = new Funcionario();
f2.nome = "Fernanda baldasserini";
f2.departamento = "Turismo";
f2.rg = "23.543.987-1";
f2.salario = 3600;
f2.estaNaEmpresa = true;
// instanciando objeto data
Data dataNasc = new Data();
dataNasc.ano = 1982;
dataNasc.mes = 12;
dataNasc.dia = 16;
f2.data = dataNasc;
// chamando metodo adicionar fucionario 1
f2 = empresa.empregados[1];
empresa.adicionarFuncionario(f2);
// instanciando outro objeto
Funcionario f3 = new Funcionario();
f3.nome = "jessica Correia";
f3.departamento = "Recepção";
f3.rg = "23.543.987-3";
f3.salario = 1800;
f3.estaNaEmpresa = true;
// instanciando objeto data
Data dataNascimento = new Data();
dataNascimento.ano = 1987;
dataNascimento.mes = 11;
dataNascimento.dia = 15;
f3.data = dataNascimento;
// chamando metodo adicionar fucionario 1
f3 = empresa.empregados[2];
empresa.adicionarFuncionario(f3);
// lista todos funcionarios adicinados no array
empresa.mostrarDadosFuncionarios();
System.out.println("Dados atuais ");
f1.mostrarDados();
f1.bonifica(200);
double ganhoAnual = f1.calculaGanhoAnual();
System.out.println();
System.out.println("DADOS ATUALIZADO DO FUNCIONARIO F1");
f1.mostrarDados();
System.out.println("Ganho anual....: " + ganhoAnual);
System.out.println("Dados atuais ");
f2.mostrarDados();
f2.bonifica(300);
ganhoAnual = f2.calculaGanhoAnual();
System.out.println();
System.out.println("DADOS ATUALIZADO DO FUNCIONARIO F2");
f2.mostrarDados();
}