Olá eu fiz o exercício e teoricamente não percebi nenhum erro, porém queria imprimir se a posição do array está ou não ocupada. Segue meu código:
class Empresa {
String nomeEmpr;
String cnpj;
Funcionario[] funcionarios;
int livre = 0;
void adiciona(Funcionario f) { // adiciona fn dentro da posição array.
this.funcionarios[this.livre] = f;
this.livre++;
}
boolean contem(Funcionario f) {
for(int i = 0; i < this.livre; i++) {
if(f == this.funcionarios[i]) {
return true;
}
}
return false;
}
void mostraInformacoesEmpresa() {
System.out.println();
System.out.println("Nome da empresa: " + nomeEmpr );
System.out.println("CNPJ: " + cnpj );
System.out.println();
}
void mostraTodasInformacoesFuncionario() {
for(int i = 0; i < this.funcionarios.length; i++) {
if(this.funcionarios[i] == null) continue;
System.out.println("Funcionario na posicao: " + i);
this.funcionarios[i].mostra();
}
}
class Funcionario {
String nomeFunci;
String rg;
String funcao;
double salario;
double valeRefei;
Data dataDeEntrada;
double salarioMaisVale() {
return this.salario + this.valeRefei;
}
double ganhoPorAno() {
return this.salario * 12;
}
void mostra() {
System.out.println();
System.out.println("Nome do Funcionario: " + nomeFunci);
System.out.println("RG: " + rg);
System.out.println("Funcao: " + funcao);
System.out.println("Salario: " + salario);
System.out.println("Vale: " + valeRefei);
System.out.println("Salario + vale: " + salarioMaisVale());
System.out.println("Ganho total por ano: " + ganhoPorAno());
System.out.println("Data de entrada: " + dataDeEntrada.getFormatada);
System.out.println();
}
}
class Data {
String getFormatada;
void getFormatada(int dia, int mes, int ano) {
this.getFormatada = dia + "/" + mes + "/" + ano;
}
}
class TestaEmpresa {
public static void main(String[] args){
Empresa empresa = new Empresa(); // cria new empresa
empresa.nomeEmpr = "Granada Interprise";
empresa.cnpj = "654987321-147";
empresa.funcionarios = new Funcionario[10]; // cria array Funcionario
Funcionario f1 = new Funcionario(); // cria novo funcionario.
f1.nomeFunci = "Mauricio";
f1.rg = "123465789";
f1.funcao = "Motorista";
f1.salario = 4500;
f1.valeRefei = 800;
f1.dataDeEntrada = new Data(); // Criando new Data().
f1.dataDeEntrada.getFormatada(11, 3, 1968);
empresa.adiciona(f1); //addiciona f1 em empresa
Funcionario f2 = new Funcionario();
f2.nomeFunci = "Felipe";
f2.rg = "789456123";
f2.funcao = "Gerente";
f2.salario = 6550;
f2.valeRefei = 800;
f2.dataDeEntrada = new Data(); // Criando new Data().
f2.dataDeEntrada.getFormatada(20, 10, 2014);
empresa.adiciona(f2);
empresa.mostraInformacoesEmpresa();
empresa.mostraTodasInformacoesFuncionario();
}
}