1
resposta

Aula 4 - Arrays

O código a seguir exibe mensagens de erro ao compilar as duas últimas classes.

class Funcionario {

    String nome;
    String rg;
    String departamento;
    Data dataEntrada;
    double salario;

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

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

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

class DadosFuncionario {

    public static void main(String[] args) {
        Funcionario a1 = new Funcionario();
        a1.nome = "Nelson";
        a1.rg = "12345678-9";
        a1.departamento = "Consultoria";
        a1.salario = 1700.0;
        a1.recebeAumento(300.0);

        a1.dataEntrada = new Data();
        a1.dataEntrada.preencheData(18, 8, 2015);

        Funcionario a2 = new Funcionario();
        a2.nome = "Debora";
        a2.rg = "98765432-1";
        a2.departamento = "Recursos Humanos";
        a2.salario = 1300.0;
        a2.recebeAumento(150.0);

        a2.dataEntrada = new Data();
        a2.dataEntrada.preencheData(19, 9, 2015);

        a1.mostra();
        a2.mostra();
    }
}

class Data {

    int dia;
    int mes;
    int ano;

    void preencheData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    String getFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

class Empresa {

    String nome;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

      void adiciona(Funcionario a) {
        this.empregados[this.livre] = a;
        this.livre++;
    }
}


class TestaEmpresa {

    public static void main (String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];

        Funcionario a1 = new Funcionario();
        a1.salario = 1700;
        a1.dataEntrada = new Data();
        empresa.adiciona(a1);

        Funcionario a2 = new Funcionario();
        a2.salario = 1300;
        a2.dataEntrada = new Data();
        empresa.adiciona(a2);

        empresa.empregados[0].mostra();
        empresa.empregados[1].mostra();
    }

}

Erro

exercicio_obj_4.java:4: error: cannot find symbol
        Funcionario[] funcionarios;
        ^
  symbol:   class Funcionario
  location: class Empresa
exercicio_obj_4.java:7: error: cannot find symbol
        void adiciona(Funcionario a) {
                      ^
  symbol:   class Funcionario
  location: class Empresa
exercicio_obj_4.java:8: error: cannot find symbol
                this.empregados[this.livre] = a;
                    ^
  symbol: variable empregados
exercicio_obj_5.java:4: error: cannot find symbol
        Empresa empresa = new Empresa();
        ^
  symbol:   class Empresa
  location: class TestaEmpresa
exercicio_obj_5.java:4: error: cannot find symbol
        Empresa empresa = new Empresa();
                              ^
  symbol:   class Empresa
  location: class TestaEmpresa
1 resposta

Olá Nelson, vamos na classe Empresa primeiro:

class Empresa {

    String nome;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

      void adiciona(Funcionario a) {
        this.empregados[this.livre] = a;
        this.livre++;
    }
}

quando fazemos this.empregados, significa que na classe Empresa tem uma variável chamada empregados, como não tem ele ta dando erro, no caso então seria:

this.funcionarios[this.livre] = a;

No TesteEmpresa também chamamos:

empresa.empregados = new Funcionario[10];

Estamos dizendo ao compilador que na classe Empresa tem o atributo empregados, então precisamos também substituir por:

empresa.funcionarios = new Funcionario[10];

e nas ultimas linhas também:

empresa.funcionarios[0].mostra();
empresa.funcionarios[1].mostra();

Ficou claro pra ti?