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

Não está imprimindo todos os funcionários

Depois que coloquei os modificadores de acesso o comando que imprime todos os funcionários agora só imprime o primeiro

class Empresa{
    Funcionario [] funcionarios;
    Data[] dataDeAdimissao;
    int livre=0;

    void adicionaFuncionario(Funcionario f){
        this.funcionarios[this.livre]=f;
        this.livre++;

    }

    void setFuncionario(){
        for(int i=0; i<this.funcionarios.length; i++){
            Funcionario funcionario= this.funcionarios[i];
            if(funcionario== null)continue;
            System.out.println("Nome do funcionario: "+funcionario.getNome());
            System.out.println("Setor do funcionario: "+funcionario.getSetor());
            System.out.println("Numero do cracha: "+funcionario.getCracha());
            System.out.println("Salario do funcionario: R$" +funcionario.getSalario());
            System.out.println("Data de adimmisao: "+ funcionario.dataDeAdimissao.getDia()+"/"+funcionario.dataDeAdimissao.getMes()+"/"+funcionario.dataDeAdimissao.getAno());
            System.out.println("");    
        }
    }

    boolean contem(Funcionario f){
                    for( int i=0; i<this.livre; i++){
                        if(f==this.funcionarios[i]){
                            return true;
                        }
                    }
                    return false;    
                }
}


class Funcionario{
    private String nome;
    private String setor;
    private int cracha;
    private double salario;
    public    Data dataDeAdimissao;

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

    }

    double calculaGanhoAnual(double ganho){
        return this.salario*12;
    }
        ///////////////////Nome do Funcionario//////////////////////////////
        public void setNome(String nomeFuncionario){
        this.nome=nomeFuncionario;
        }
        public String getNome(){
        return this.nome;
        }            
        ///////////////////Nome do setor//////////////////////////////////    
        public void setSetor(String nomeSetor){
            this.setor=nomeSetor;
        }
        public String getSetor(){
            return this.setor;
        }
        //////////////////////Numero do crachá//////////////////////////////
        public void setCracha(int numeroCracha){
            this.cracha=numeroCracha;
        }     
        public int getCracha(){
            return this.cracha;
        }
        ///////////////////////Valor do salário////////////////////////////
        public void setSalario(double valorSalario){
            this.salario=valorSalario;
        }
        public double getSalario(){
            return this.salario;
        }
        public Data getAdimissao(){
            return this.dataDeAdimissao;
        }

}
    class Data{
        private int dia;
        private String mes;
        private int ano;



        //////////////////////Dia do contrato/////////////////////////////
        public void setDia(int novoDia){
            this.dia=novoDia;
        }
        public int getDia(){
            return this.dia;
        }
        //////////////////////Mes do contrato///////////////////////////////////
        public void setMes(String novoMes){
            this.mes=novoMes;
        }
        public String getMes(){
            return this.mes;
        }
        ///////////////////Ano do contrato//////////////////////////////
        public void setAno(int novoAno){
            this.ano=novoAno;
        }
        public int getAno(){
            return this.ano;
        }
    }
class principal{
    public static void main(String args[]){

        Empresa fablab= new Empresa();
        fablab.funcionarios= new Funcionario[10];
        fablab.dataDeAdimissao= new Data[10];


        Funcionario mauricio= new Funcionario();
        mauricio.dataDeAdimissao= new Data();

        fablab.funcionarios[0] = new Funcionario();
        fablab.dataDeAdimissao[0]= new Data();

        fablab.dataDeAdimissao[0].setDia(1);
        fablab.dataDeAdimissao[0].setMes("Outubro");
        fablab.dataDeAdimissao[0].setAno(2010);
        fablab.funcionarios[0].setNome("Mauricio Akbar");
        fablab.funcionarios[0].setSetor("Faxina");
        fablab.funcionarios[0].setCracha(34567);
        fablab.funcionarios[0].setSalario(1000.0);


        Funcionario guilherme= new Funcionario();
        guilherme.dataDeAdimissao= new Data();

        fablab.funcionarios[1]= new Funcionario();
        fablab.dataDeAdimissao[1]= new Data();


        fablab.funcionarios[1].setNome("Guilherme Xispirito");
        fablab.dataDeAdimissao[1].setDia(1);
        fablab.dataDeAdimissao[1].setMes("Janeiro");
        fablab.dataDeAdimissao[1].setAno(2010);
        fablab.funcionarios[1].setSetor("Vendas");
        fablab.funcionarios[1].setCracha(171);
        fablab.funcionarios[1].setSalario(2500.0); 


        fablab.setFuncionario();


    }
}

E o erro que aparece é Exception in thread "main" java.lang.NullPointerException at Empresa.setFuncionario(metodo.java:20) at principal.main(funcionario.java:42)

1 resposta
solução!

Olá Thiago, o erro está nessa linha:

System.out.println("Data de adimmisao: "+ funcionario.dataDeAdimissao.getDia()+"/"+funcionario.dataDeAdimissao.getMes()+"/"+funcionario.dataDeAdimissao.getAno());

Para que funcione você precisa incluir:

 for(int i=0; i<this.funcionarios.length; i++){
            Funcionario funcionario= this.funcionarios[i];
>>>> Data dataDeAdimissao = this.dataDeAdimissao[i]; 
            if(funcionario == null)continue;
            System.out.println("Nome do funcionario: "+funcionario.getNome());
            System.out.println("Setor do funcionario: "+funcionario.getSetor());
            System.out.println("Numero do cracha: "+funcionario.getCracha());
            System.out.println("Salario do funcionario: R$" +funcionario.getSalario());
(alterar)  System.out.println("Data de adimmisao: "+ dataDeAdimissao.getDia()+"/"+dataDeAdimissao.getMes()+"/"+dataDeAdimissao.getAno());
            System.out.println("");    
        }

Existe 2 Datas de Admissão: - Na Classe Funcionario - Na Classe Empresa

O erro está em você buscar : funcionario.dataDeAdimissao.getDia() em diante...

dataDeAdimissao > não está sendo preenchida e está "Nula" por isso o erro NullPointerException