1
resposta

Erro de compilação aula 5 exercício 4

Boa noite a todos! Pessoal eu estou com um problema que esta tirando meu sono...rsrs (não consegui resolver =/). Coloquei o atributo Funcionario[] empregados como private:

public class Empresa {

    // outros atributos
    private Funcionario[] empregados;

    public void setEmpregados(Funcionario empregados[]) {

        this.empregados = empregados;
    }

    public Funcionario getEmpregados(int posicao) {

        return this.empregados[posicao];
    }
    // outros métodos

Na classe de teste aparece o erro "getEmpregados cannot be resolved or is not a field" e não consigo rodar o código:

public class TestaEmpresa {

    public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.setNome("XPTO");
        empresa.setCnpj("12.345.678-0009-10");
        empresa.setEmpregados(new Funcionario[5]);

        // O erro aparece em cima deste laço
        for (int i = 0; i < empresa.getEmpregados.length; i++) {

            Funcionario f = new Funcionario();
            f.setDataEntradaBanco(new Data());
            f.setNome("Bruno");
            f.setRg(12.345.678.0);
            f.setSalario(1000);
            int vf = 1;
            if(vf == 0) {
                f.setEstaNaEmpresa(false);
            }else {
                f.setEstaNaEmpresa(true);
            }
            f.setDepartamento("Programação");
            f.getDataEntradaBanco().formatada();
            empresa.adiciona(f);
            f.mostra();
        }
    }
}

Acho que é algo relacionado com pegar o tamanho do array de empregado.

Obrigado

1 resposta

No trecho:

 for (int i = 0; i < empresa.getEmpregados.length; i++)

O correto é:

 for (int i = 0; i < empresa.getEmpregados().length; i++)

Seu código está errado porque getEmpregados ao ser chamado sem os parênteses é procurado no objeto empresa como se fosse um um atributo público, daí o erro que você está enfrentado.