1
resposta

Problema na função mostra

Quando eu compilo o programa ele dá o seguinte erro referente a ultima linha do código:

cap2.java:60: error: non-static variable funcionarios cannot be referenced from a static context Empresa.funcionarios[0].mostra();

 class Empresa {
    String nome;
    funcionario[] funcionarios;
    String cnpj;
    int livre = 0;

    void adicionar(funcionario f){
        this.funcionarios[this.livre] = f;
        this.livre++;
        }
    }



class funcionario {
    String nome;
    String departamento;
    double salario;
    String dataEntrada;
    String rg;        

    void recebeAumento(double aumento) {
        this.salario += aumento;
    }

    double calculaGanhoAnual() {
        return this.salario*12;
    }

    void mostra () {
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salario: " + this.salario);
        System.out.println("Data de Entrada: " + this.dataEntrada);
        System.out.println("RG: " + this.rg);
        System.out.println("Ganho Anual: " + this.calculaGanhoAnual());

    }
}


class TestaEmpresa {
    public static void main(String[] args){
        Empresa empresa = new Empresa();
        empresa.funcionarios = new funcionario[10];;

        funcionario f1 = new funcionario();
        f1.salario = 1000;
        empresa.adicionar(f1);

        funcionario f2 = new funcionario();
        f2.salario = 2000;
        empresa.adicionar(f2);

        funcionario f3 = new funcionario();
        f3.salario = 2500;
        empresa.adicionar(f3);

        Empresa.funcionarios[0].mostra();}
1 resposta

Olá , José Eduardo tudo bem?

Este erro é causado porque você está tentando acessar o array de funcionários de forma static ou seja como uma variável de classe porém ele está como variável de instância.

O que você pode fazer, é implementar um método na classe Empresa que liste todos os funcionários cadastrados aí sim vc conseguiria chamar o método mostra da classe funcionário.

Espero ter te ajudado. Aquele abraço