Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como funcionou o livre neste caso?

Pelo que entendi do código abaixo ele irá começar da primeira posição do vetor e irá adicionando posição por posição, mas o que ele faz se encontrar um espaço preenchido? Não seria melhor verificar para depois adicionar? Obrigado!

class Empresa {
    Funcionario[] empregados;
    String cnpj;
    int livre = 0;

    void adiciona(Funcionario f) {
        this.empregados[this.livre] = f;
        this.livre++;
    }
}
1 resposta
solução!

Olá tudo bem?

Isso só irá acontecer, encontrar espaços preenchidos, se você adicionar um "Funcionario" acessando diretamente o array:

Empresa empresa = new Empresa();
Funcionario joao = new Funcionario();
empresa.empregados[numero] = joao;

Se você não fizer isso, e sim adicionar apenas usando o metodo "adiciona(Funcionario f)" não encontrará este problema.

Pois seu método adiciona "Funcionario"s sequencialmente, pois perceba que o "livre" começa valendo 0 e a cada "Funcionario" adicionado este é somado 1.Ou seja ao fazer:

empresa.adiciona(f)

O "Funcionario" f sera adicionado a posição 0 do array, e posteriormente 1, e depois 2 e assim por diante.