2
respostas

Erro ao executar o programa TestaEmpresaFuncionario.java

class Empresa {
    String nome;
    String cnpj;
    Funcionarios[] FuncionariosDaEmpresa;
    /*void adicionar(Funcionarios f) {
        for (int i = 0 ; i < this.FuncionariosDaEmpresa.length; i++ ) {
            if(this.FuncionariosDaEmpresa[ i ] == null)
            { 
            this.FuncionariosDaEmpresa[ i ] = f;
            System.out.println("Funcionário inserido com sucesso!");
            }

        }
    }*/
    int livre = 0;

    void adicionar(Funcionarios f) {
        this.FuncionariosDaEmpresa[this.livre] = f;
        this.livre++;
        System.out.println("Funcionário inserido com sucesso!");
    }
}
// Classe de teste

class TestaEmpresaFuncionario {

    public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.nome = "Minha Empresa";
        empresa.cnpj = "cnpj-01";
        Funcionarios[] FuncionariosDaEmpresa;
        FuncionariosDaEmpresa = new Funcionarios[10];



        Funcionarios f1 = new Funcionarios();
        //Lotacao lotacao;
        f1.nome = "Hugo";
        f1.salario = 100;
        f1.rg = "787878";
        f1.dataAdmissao = "18/01/2017";

        //f1.recebeAumento(50);
        //f1.dataAdmissao.dia = 17;
        //f1.dataAdmissao.mes = 1;
        //f1.dataAdmissao.ano = 2017;

       // System.out.println("salario atual:" + f1.salario+" do funcionário: "+f1.nome);
       // System.out.println("ganho anual:" + f1.calculaGanhoAnual());

        f1.listaInformacoes();
        empresa.adicionar(f1);
    }
}

Erro: NullPointerException
2 respostas

Olá Zilto,

note que no seu código você cria o array, mas não coloca ele dentro da empresa

 public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.nome = "Minha Empresa";
        empresa.cnpj = "cnpj-01";

        //variável local do main, não está no objeto da Empresa
        Funcionarios[] FuncionariosDaEmpresa; 

       //array de 10 funcionarios passado para a variável local FuncionariosDaEmpresa
        FuncionariosDaEmpresa = new Funcionarios[10];     
    ...
}

Assim, o atributo FuncionariosDaEmpresa do objeto da Empresa continuou com valor null. E quando você tentou adicionar o f1 ele deu o NullPointerException por conta do array estar nulo.

Temos que criar uma instância em uma posição do array.

Penso que seria mais ou menos assim:

empresa[0] = new Empresa();
 empresa[0].adicinar(f1);