public class TesteFuncionario {
public static void main (String [] args){
Funcionario registro_1 = new Funcionario();
registro_1.dataEntrada = new Date();
registro_1.nome = "Hugo";
registro_1.registro = "6444296266";
registro_1.salario = 1100;
registro_1.dataEntrada.preencheData(8,9,2015);
//System.out.println("O primeiro funcionario chamado "+registro_1.nome+" e contem o salario de R$ "+ registro_1.salario);
/*registro_1.recebeAumento(500);
System.out.println("\nHugo recebeu um aumento de R$ 500");
*/
registro_1.mostra();
/*Funcionario registro_2 = new Funcionario();
registro_2.nome = "Hugo";
registro_2.registro = "6444296266";
registro_2.salario = 1100;
registro_2.dataEntrada = data;
*/
/*Funcionario registro_3 = new Funcionario();
registro_3 = registro_1;
if (registro_1 == registro_3) {
System.out.println("iguais");
} else {
System.out.println("diferentes");
}
*/
}
}
public class Funcionario {
String nome;
double salario;
Date dataEntrada;
String registro;
void recebeAumento(double valorAdicional){
this.salario += valorAdicional;
}
double calculaGanhoAnual() {
return this.salario * 12;
}
void mostra(){
System.out.println("\nNome do funcionario : " + this.nome +
"\nSalario do funcionario : " + this.salario +
"\nRegistro de funcionario : " + this.registro +
"\nGanho anual do funcionario : " + this.calculaGanhoAnual());
System.out.println("Data de entrada : " + this.dataEntrada.getFormatada());
//Metodo void mostra() mostra a data de entrada que foi formatada dentro do metodo String getFormatada()
}
}
public class Date {
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;
}
}
public class Empresa {
String nome;
String cnpj;
Funcionario empregados[];
int posicaoLivre = 0;
void adiciona(Funcionario funcionario){
this.empregados[this.posicaoLivre] = funcionario;
this.posicaoLivre++;
}
}
public class TesteEmpresa {
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
Funcionario f1 = new Funcionario();
f1.nome = "Aniele";
f1.salario = 1000;
f1.dataEntrada.preencheData(1,7,2014);
empresa.adiciona(f1);
Funcionario f2 = new Funcionario();
f2.nome = "Aline";
f2.salario = 1700;
f2.dataEntrada.preencheData(5,5,2015);
empresa.adiciona(f2);
empresa.empregados[0].mostra();
empresa.empregados[1].mostra();
}
}
Quando eu executo a classe TesteEmpresa, o seguinte erro é reportado:
Exception in thread "main" java.lang.NullPointerException
at aula_3.TesteEmpresa.main(TesteEmpresa.java:15)
Quando comento as linhas que eu estou setando a data, o erro some.
Ai quando executo o programa de novo, o método mostra() funciona na posição[0]e mostra o funcionario f1 (aniele) corretamente e a posição[1] não é exibida. Embaixo do dados do funcionario f1 vem seguido de uma exception, segue abaixo:
Exception in thread "main" java.lang.NullPointerException
at aula_3.Funcionario.mostra(Funcionario.java:29)
at aula_3.TesteEmpresa.main(TesteEmpresa.java:25)
Gostaria de entender porque isso acontece.
Obrigado.