Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Essa maneiro pra esse código é valida?

 public void adicionar(Funcionario f){
        for(int i=0; i< empregados.length; i++){
            this.empregados[i] = f;
        }
    }
3 respostas
solução!

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!