O propósito do execício não é adicionar o funcionário e em todas as posições, mas sim em fazer uma validação e adicioná-lo apenas em uma posição livre.
Você pode fazer um laço percorrendo todas as posições do array, caso a posição seja nula if (cadastroFuncionario[i] == null)
, ai você adicionaria.
public void adicionar (Funcionario f) {
for (int i=0; i<cadastroFuncionario.length;i++){
if (cadastroFuncionario[i] == null){
cadastroFuncionario[i]=f;
}
}
}
Dessa forma você não atropelaria os valores das posições anteriores.
Ou você pode criar um atributo int posicaoLivre = 0
de classe armazenando para armazenar a posição livre. Por exemplo, após adicionar um funcionário, incrementamos +1
no posicaoLivre
.
Sobre os pontos a serem considerados:
1 - O funcionário deve ser instanciado na classe de teste, e não na classe Empresa
. Ele deve ser passado no método adicionar()
pronto.
2 - Utilizar if
ou for
sem as chaves faz com que esse comandos só reconheçam apenas uma linha de código. No caso como você estava utilizando os dois comandos:
cadastroFuncionario[i]= new Funcionario();
cadastroFuncionario[i]=f;
O que faz com que o comando cadastroFuncionario[i]=f;
não seja reconhecida, acusando que a variável i
não foi definida.