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

Minha classe não compila esta reclamando da variável (empregados) e do método mostrarEmpregados

class Funcionario {

    private String nome;
    private String rg;
    private Data dataEntrada = new Data();
    private String departamento;
    private double salario;

    public void recebeAumento(double aumentaValor) {

        this.salario = this.salario + aumentaValor;

    }

    public double calcularGanhoAnual() {

        return this.salario * 12;

    }

    public String getNome() {
        return this.nome;

    }

    public String setNome(String nome) {
        return this.nome = nome;
    }

    public String getRg() {
        return this.rg;

    }

    public String setRg(String rg) {
        return this.rg = rg;
    }

    public Data getDataEntrada() {
        return this.dataEntrada;

    }

    public Data setDataEntrada(Data dataEntrada) {
        return this.dataEntrada = dataEntrada;
    }

    public String getDepartamento() {
        return this.departamento;

    }

    public String setDepartamento(String departamento) {
        return this.departamento = departamento;
    }

    public double getSalario() {
        return this.salario;

    }

    public double setSalario(double salario) {
        return this.salario = salario;
    }

        void mostrarEmpregados(){

        for(int i = 0; i < this.empregados.length; i++){

            System.out.println("Funcionario na posicao: " + i);
            System.out.println("Salario R$: " + empregados[i].getSalario());
            System.out.println("Data: " + empregados[i].getDataEntrada().getFormataData());
            System.out.println("Ganho Anual: " + empregados[i].calcularGanhoAnual());
            System.out.println("Nome: " + empregados[i].getNome());
        }
    }
}
class Data {

    int dia;
    int mes;
    int ano;

    void preencherData(int dia, int mes, int ano){

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;

        }

    String getFormataData(){

        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}
class Empresa {

    private String nome;
    private String cnpj;
    private int livre = 0;
    private Funcionario[] empregados;

    public String getNome(){
    return this.nome;
    }

    public String setNome(String nome){
        return this.nome = nome;
    }

    public String getCnpj(){
        return this.cnpj;
    }

    public String setCnpj(String cnpj){
        return this.cnpj = cnpj;
    }

    public Funcionario getFuncionario(int posicao){
        return this.empregados[posicao];
    }
    void adicionar (Funcionario f) {

         this.empregados[this.livre] = f;
        this.livre++;
    }
}
class ProgramaFunc {

    public static void main(String[] args) {

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

    Funcionario f1 = new Funcionario();

    f1.setSalario(1000);
    f1.setNome("Jakson Vieira");
    Data f1data = new Data();
    f1data.preencherData(10, 10, 1992);
    f1.setDataEntrada(f1data);
    f1.recebeAumento(600);
    empresa.adicionar(f1);

    Funcionario f2 = new Funcionario();

    f2.setSalario(1000);
    f2.setNome("Mario Vieira");
    Data f2data = new Data();
    f2data.preencherData(10, 10, 1999);
    f2.setDataEntrada(f2data);
    f2.recebeAumento(900);
    empresa.adicionar(f2);


    empresa.mostrarEmpregados();
    }
}
1 resposta
solução!

Oi, na sua classe Funcionário você está tentando acessar o atributo empregados na seguinte linha:

for(int i = 0; i < this.empregados.length; i++){

Mas na verdade o atributo empregados está classe Empresa, mova o método mostra empregados da classe funcionário para a classe empresa que tudo deve funcionar como o esperado.

Abraços e bons estudos.