Fiz o que foi pedido no exercício, compilou porém na hora de imprimir está mostrando um funcionário a mais e não sei o que fiz de errado no meu código. Segue meu código:
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 Funcionario{
String nome;
String departamento;
double salario;
Data dataEntrada;
String rg;
void recebeAumento(double valor){
this.salario += valor;
}
double calculaGanhoAnual(){
double ganhoAnual = this.salario * 12;
return ganhoAnual;
}
void mostra(){
System.out.println("Nome: "+this.nome);
System.out.println("Departamento: "+this.departamento);
System.out.println("Salario: "+this.salario);
System.out.println("Data da entrada: "+dataEntrada.getFormatada());
System.out.println("R.G: "+this.rg);
System.out.println("Ganho anual: "+this.calculaGanhoAnual()+"\n\n");
}
}
class Empresa{
String nome;
String cnpj;
Funcionario[] funcionarios;
int k=0; //auxiliar
void adiciona(Funcionario func){
this.funcionarios[this.k] = func;
this.k++;
}
void mostraEmpregados() {
for (int i = 0; i < this.funcionarios.length; i++) {
System.out.println("Funcionário na posição: " + i);
// preencher para mostrar outras informacoes do funcionario
System.out.println("Nome: "+this.funcionarios[i].nome);
System.out.println("Salario: "+this.funcionarios[i].salario);
System.out.println("Ganho anual: "+this.funcionarios[i].calculaGanhoAnual()+"\n\n");
}
}
}
class TestaEmpresa{
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.funcionarios = new Funcionario[10];
for (int i = 0; i < 5; i++) {
empresa.funcionarios[i] = new Funcionario();
empresa.funcionarios[i].salario = 1000 + i * 100;
empresa.adiciona(empresa.funcionarios[i]);
}
empresa.mostraEmpregados();
}
}
Obs: Quando mostra o funcionário a mais, logo depois de imprimira posição dele mostra a mensagem de erro:
Exception in thread "main" java.lang.NullPointerException
at Empresa.mostraEmpregados(Programa.java:56)
at TestaEmpresa.main(Programa.java:74)