Exception in thread "main" java.lang.NullPointerException at Funcionarios.Empresa.mostraTodasInformacoes(MainFuncionarios.java:41) at Funcionarios.TestaEmpresa.main(MainFuncionarios.java:103)
Esse erro persiste em acontecer, porém não acho o motivo dele.
Segue meu codigo:
class Funcionario{
String nome;
String departamento;
double salario;
Data dataDeEntrada;
String rg;
void recebeAumento(double Aumento){
this.salario += Aumento;
}
double calcularGanhoAnual(){
return this.salario * 12;
}
void mostra(){
System.out.println("nome: " + this.nome);
System.out.println("departamento: " + this.departamento);
System.out.println("salario: " + this.salario);
System.out.println("data de entrada: " + this.dataDeEntrada.getFormata());
System.out.println("rg: " + this.rg);
System.out.println("calculo anual: " + this.calcularGanhoAnual());
}
}
class Empresa{
String nome;
String cnpj;
Funcionario[] empregados;
int livre = 0;
void adiciona(Funcionario f) {
this.empregados[this.livre] = f;
this.livre++;
}
void mostraTodasInformacoes(){
for(int x = 0; x < this.empregados.length; x++){
System.out.println("Funcionarios na posicao: " + x);
this.empregados[x].mostra();
}
}
boolean contem(Funcionario f) {
for (int z = 0; z < this.livre; z++) {
if (f == this.empregados[z]) {
return true;
}
}
return false;
}
}
class Data{
int dia;
int mes;
int ano;
String getFormata(){
return this.dia + "/" + this.mes + "/" + this.ano;
}
void preencheData(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
}
//USANDO ARRAYS
class TestaEmpresa{
public static void main(String[] args){
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
empresa.empregados[0] = new Funcionario();
empresa.empregados[0].nome = "andre montorio";
empresa.empregados[0].departamento = "desenvolvedor";
//empresa.empregados[0].dataDeEntrada.preencheData(26, 04, 1995);
empresa.empregados[0].rg = "521841842";
empresa.empregados[0].salario = 5000.0;
empresa.empregados[0].dataDeEntrada = new Data();
empresa.adiciona(empresa.empregados[0]);
//OU POSSO FAZER ASSIM
Funcionario f1 = new Funcionario();
f1.salario = 1000.0;
f1.nome = "andrezim";
f1.departamento = "desenvolvedor 2";
f1.rg = "1111111111111";
f1.dataDeEntrada = new Data();
//f1.dataDeEntrada.preencheData(06, 02, 1990);
empresa.adiciona(f1);
//empresa.empregados[0].mostra();
//empresa.empregados[1].mostra();
empresa.mostraTodasInformacoes();
}
}
Também tenho dúvida na parte "f1.dataDeEntrada = new Data" . Qual a necessidade? E porque quando eu tento adicionar uma data usando: f1.dataDeEntrada.preencheData(06, 02, 1990); ou empresa.empregados[0].dataDeEntrada.preencheData(26, 04, 1995); Aparece erro.