public void adicionar(Funcionario f){
for(int i=0; i< empregados.length; i++){
this.empregados[i] = f;
}
}
public void adicionar(Funcionario f){
for(int i=0; i< empregados.length; i++){
this.empregados[i] = f;
}
}
Não exatamente, Alisson. Um loop for não faz muito sentido nesse método; seu código não vai produzir o que queremos. Acho que o que você imaginou é que o for continuaria no lugar em que parou cada vez que chamássemos o método, certo? Mas o for "recomeça" a cada chamada. Suponhamos que a array empregados já tenha 2 funcionários ([funcionario1, funcionario2]
) e queremos adicionar mais um. Vamos simular seu código para entender porque não daria certo:
1 - chamamos o método adicionar, dando o funcionario3 como parâmetro
2 - O loop começa. i = 0
3 - empregados[0], que antes era funcionario1, vira funcionario3
4 - i = 1. empregados[1], que antes era funcionario2, vira funcionario3
5 - i = 2. empregados[2], que antes não era nada, agora é funcionario3
Ou seja, você sempre acaba substituindo os funcionários que antes estavam na array pelo que você quer adicionar. A melhor opção é seguir algo similar a isso:
class Empresa {
String nome;
String cnpj;
Funcionario[] funcionarios;
int posicaoFuncionario = 0;
void adicionaFuncionario(Funcionario funcionario) {
funcionarios[this.posicaoFuncionario] = funcionario;
this.posicaoFuncionario++;
}
}
Dessa forma, sempre sabemos qual a posição livre (posicaoFuncionario
) que devemos adicionar um funcionário e o método de adição de funcionário simplesmente adiciona o funcionário que queremos na posição livre e muda a posição livre para uma depois. Não precisamos (e não devemos) iterar por todos os funcionários para adicionar um, entende? Se eu deixei algo confuso, pode falar e eu (e os outros alunos da Alura) tento explicar de outra forma! Abraços!
Correto amigo, tava pensando em uma continuação da onde paro o for. obrigado!
Vou marcar minha resposta ali em cima como solução, ok, Alisson? Para ajudar os outros alunos que tiverem dúvidas similares! Se tiver outra dúvida, pode abrir outro tópico! Bons estudos!