Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Só estou conseguindo imprimir um único Funcionário:

Olá estou tentando responder o exercício mais só estou conseguindo fazer uma unica impressão. Gostaria de ajuda.

Segue o código:

class Empresa {

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

    void adiciona(Funcionario f) {

        this.funcionarios[this.livre] = f;
        this.livre++;

    }

    void imprimeEmpresa() {
        System.out.println();
        System.out.println("Empresa " + this.nome);
        System.out.println();
        System.out.println("CPJ: " + this.cnpj);
        System.out.println();

        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.nome);
            System.out.println();
            System.out.println("Funcao: " + funcionario.funcao);
            System.out.println();
            System.out.println("Tem salario de: " + funcionario.salario);
            System.out.println();
            System.out.println("Data de entrada na empresa: " + funcionario.dataDeEntrada.getFormatada);
        }
    }
}

class Funcionario {

    String nome;
    String funcao;
    double salario;
    Data dataDeEntrada;

}

class Data { 

    String getFormatada;

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

        this.getFormatada = dia + "/" + mes + "/" + ano;
    }
}

class TestaEmpresa {

    public static void main(String[] args) {

    //====================================================================//
        //Criando uma nova empresa.
        Empresa emp1 = new Empresa();
            emp1.nome = "Comercial Carvalho";
            emp1.cnpj = "10.354.987/0003-38";
    //====================================================================//

    //====================================================================//
        //Criando um novo Array de Funcionario;
        Funcionario func0 = new Funcionario();
        emp1.funcionarios = new Funcionario[10];

        // Criando o 1º funcionario;
        emp1.funcionarios[0] = new Funcionario();
            emp1.funcionarios[0].nome = "Mauricio";
            emp1.funcionarios[0].funcao = "Motorista";
            emp1.funcionarios[0].salario = 3560;

        emp1.funcionarios[0].dataDeEntrada = new Data();
            emp1.funcionarios[0].dataDeEntrada.getFormatada(20, 10, 2014);

        emp1.adiciona(emp1.funcionarios[0]); // adicionando o funcionario no Array.
    //====================================================================//

    //====================================================================//

        //Criando um novo funcionario;

        Funcionario func1 = new Funcionario();
        emp1.funcionarios = new Funcionario[10];

        emp1.funcionarios[1] = new Funcionario();
            emp1.funcionarios[1].nome = "Felipe";
            emp1.funcionarios[1].funcao = "Bebezinho";
            emp1.funcionarios[1].salario = 5000;

        emp1.funcionarios[1].dataDeEntrada = new Data();
            emp1.funcionarios[1].dataDeEntrada.getFormatada(30,05,2015);


        emp1.adiciona(emp1.funcionarios[1]);
    //====================================================================//    
        emp1.imprimeEmpresa();

    }
}
4 respostas
solução!

Olá. Toda vez que você vai criar um funcionário novo você está criando também um novo array e atribuindo à empresa.

Pelo que vi, cada vez que você cria um novo funcionário, você está instanciando um novo array, o que você deve fazer é criar um novo objeto funcionário mas colocar ele no mesmo array do primeiro.

Boa galera!!!

Obrigado pela dica. Fiz a retirada de: emp1.funcionarios = new Funcionario[10]; e funfou!