Ola pessao, ja faz um bom tempinho que to tentando entender onde esta o erro mas nao consigo.
Quando eu executo o codigo, o programa me mostra o primeiro funcionario tudo certinho, mas com o segundo aparece o seguinte:
Nome: null
Departamento: null
Exception in thread "main" java.lang.NullPointerException
at Funcionario.mostra(Funcionario.java:20)
at TesteEmpresa.main(Funcionario.java:88)
MEU CODIGO COMPLETO:
class Funcionario{
String nome;
String departamento;
double salario;
Data dataDeEntrada;
String rg;
void aumento(double valorAumento){
this.salario += valorAumento;
}
double ganhoAnual(){
return this.salario * 12;
}
void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());
System.out.println("RG: " + this.rg);
System.out.println("Salario: " + this.salario);
System.out.println("Ganho anual: " + this.ganhoAnual());
System.out.println(" " );
}
}
class Data{
int dia;
int mes;
int ano;
void preencheData (int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
String getFormatada(){
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
class Empresa{
String nomeEmpresa;
String cnpj;
Funcionario[] empregados;
int livre = 0;
void adiciona(Funcionario f){
this.empregados[this.livre] = f;
this.livre++;
}
}
class TesteEmpresa{
public static void main(String[] args){
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
Funcionario f1 = new Funcionario();
f1.dataDeEntrada = new Data();
f1.dataDeEntrada.preencheData(8, 3, 2015);
f1.nome = "Hugo";
f1.departamento = "TI";
f1.salario = 100;
f1.rg = "ABCD1234";
f1.aumento(50);
empresa.adiciona(f1);
Funcionario f2 = new Funcionario();
f1.dataDeEntrada = new Data();
f1.dataDeEntrada.preencheData(8, 3, 2015);
f1.nome = "Jeferson";
f1.departamento = "TI";
f1.salario = 500;
f1.rg = "ABCE1234";
f1.aumento(100);
empresa.adiciona(f2);
empresa.empregados[0].mostra();
empresa.empregados[1].mostra();
}
}