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

Arrays - exercicio 3

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

// assim
//     Funcionario f1 = new Funcionario();
//     f1.salario = 1000;
//     f1.dataEntrada = new DataFuncionario();
//     empresa.adiciona(f1);

//     Funcionario f2 = new Funcionario();
//     f2.salario = 1700;
//     f2.dataEntrada = new DataFuncionario();
//     empresa.adiciona(f2);
 //ou assim
       for (int idx = 0; idx < 5; idx++) {
           Funcionario f = new Funcionario();
           f.salario = (1000 + (idx * 100));
           empresa.adiciona(f);
      };

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

porque quando utilizo o Array, apresenta este erro na execução ?? C:\Caca\Alura\CursoJava\JavaIPrimeirosPassos\programas>java AtualizaEmpresa idFuncionario: 0 departamento : null dataEntrada : null salario : 1000.0 nome : DadosFuncionario@15db9742 cpf : DadosFuncionario@6d06d69c rg : DadosFuncionario@7852e922 rua : Endereco@4e25154f bairro : Endereco@70dea4e cidade : Endereco@5c647e05 estado : Endereco@33909752 cep : Endereco@55f96302 salario atual: 1000.0 ganho anual: 12000.0 Exception in thread "main" java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:50) at AtualizaEmpresa.main(AtualizaEmpresa.java:23)

8 respostas

Bom dia Luis, pode postar sua classe Empresa por favor?

class Empresa {
    Funcionario[] empregados;
    String cnpj;
    int livre = 0;

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

    void mostraEmpregados() {
         for (int idx = 0; idx < this.livre; idx++) {
              System.out.println("Funcionário na posição: " + idx);

              System.out.println("idFuncionario: "  + this.empregados[idx].idFuncionario);                         
              System.out.println("departamento : "  + this.empregados[idx].departamento);                        
              System.out.println("nome         : "  + this.empregados[idx].nome);
              System.out.println("cpf          : "  + this.empregados[idx].cpf);              

              System.out.println("Salario R$" + this.empregados[idx].salario);

            }
    };    
};

Aparentemente sua classe Empresa está ok, pode mandar a classe Funcionario por favor? como deu null pointer em um método dela, pode ser que o erro esteja ali!

// isto é um objeto                                                                                                                     
class Funcionario {                                                                                                                           
    int    idFuncionario;                                                                                                                         
    String departamento;
//  String dataEntrada;
    DataFuncionario   dataEntrada; //DataFuncionario vem da classe DataFuncionario
    double salario;                                                                                                                       

    DadosFuncionario nome = new DadosFuncionario();
    DadosFuncionario cpf  = new DadosFuncionario();
    DadosFuncionario rg   = new DadosFuncionario();

    Endereco         rua    = new Endereco();   
    Endereco         bairro = new Endereco();
    Endereco         cidade = new Endereco();
    Endereco         estado = new Endereco();
    Endereco         cep    = new Endereco();   

   // método recebe aumento
   void recebeAumento(double valorAumento) {                                                                                                   
        this.salario += valorAumento; 
    };  

   //método calcula ganho anual
   // este metodo não pode ser void porque precisa retornar parametro.    
   double calculaGanhoAnual() {
          double salarioAnual = this.salario * 12;
          return salarioAnual;   
    };

    void mostra() {
         System.out.println("idFuncionario: "  + this.idFuncionario);                         
         System.out.println("departamento : "  + this.departamento);                        
         System.out.println("dataEntrada  : "  + this.dataEntrada);                        
         System.out.println("salario      : "  + this.salario);                        

//       System.out.println("nome         : "  + this.nome);
//       System.out.println("cpf          : "  + this.cpf);
//       System.out.println("rg           : "  + this.rg);
//                                               
//       System.out.println("rua          : "  + this.rua);
//       System.out.println("bairro       : "  + this.bairro);
//       System.out.println("cidade       : "  + this.cidade);
//       System.out.println("estado       : "  + this.estado);
//       System.out.println("cep          : "  + this.cep);

         System.out.println("nome         : "  + nome.nomeFuncionario);
         System.out.println("cpf          : "  + cpf.cpfFuncionario);   
         System.out.println("rg           : "  + rg.rgFuncionario);    

         System.out.println("rua          : "  + rua.ruaEndereco);      
         System.out.println("bairro       : "  + bairro.bairroEndereco);
         System.out.println("cidade       : "  + cidade.cidadeEndereco);
         System.out.println("estado       : "  + estado.estadoEndereco);
         System.out.println("cep          : "  + cep.cepEndereco);      


         System.out.println("salario atual: " + this.salario);          
         System.out.println("ganho anual:   " + this.calculaGanhoAnual());

         System.out.println("Dia: " + this.dataEntrada.diaDataFuncionario);
         System.out.println("Mês: " + this.dataEntrada.mesDataFuncionario);
         System.out.println("Ano: " + this.dataEntrada.anoDataFuncionario);

         System.out.println("Data de entrada: " + this.dataEntrada.getFormatada());
    };          
};
class AtualizaFuncionario {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        Funcionario f2 = new Funcionario();
        //Funcionario f2 = f1;
        f1.idFuncionario = 0001; // atributo da classe funcionario
        f1.departamento  = "Informatica"; 

//      f1.dataEntrada   = "20/12/2016";  
        f1.dataEntrada   = new DataFuncionario();
        f1.dataEntrada.preencheData(20, 12, 2016);

        f1.salario       = 1000;      
        f1.recebeAumento(500); //metodo da classe Funcionario

        f1.nome.nomeFuncionario = "Joao das Coves";  // attributos da Classe DadosFuncionario
        f1.cpf.cpfFuncionario   = "001.002.003.004-05"; 
        f1.rg.rgFuncionario     = "7.123.256";  

        f1.rua.ruaEndereco       = "Rua do Sobe e Desce"; //Attributos  da classe Endereco
        f1.bairro.bairroEndereco = "Nuinca Aoparece";
        f1.cidade.cidadeEndereco = "Claraval";
        f1.estado.estadoEndereco = "MG";
        f1.cep.cepEndereco       = "123456000";   

        f2.idFuncionario = 0002; // atributo da classe funcionario
        f2.departamento  = "Informatica 2"; 
//      f2.dataEntrada   = "20/11/2016"; 
        f2.dataEntrada   = new DataFuncionario();
        f2.dataEntrada.preencheData(20, 11, 2016);        


        f2.salario       = 2000;      
        f2.recebeAumento(600); //metodo da classe Funcionario

        f2.nome.nomeFuncionario = "Luis das Coves";  // attributos da Classe DadosFuncionario
        f2.cpf.cpfFuncionario   = "006.007.008.009-10"; 
        f2.rg.rgFuncionario     = "8.123.256";  

        f2.rua.ruaEndereco       = "Rua do Sobe e Desce 2"; //Attributos  da classe Endereco
        f2.bairro.bairroEndereco = "Nuinca Aoparece 2";
        f2.cidade.cidadeEndereco = "Claraval 2";
        f2.estado.estadoEndereco = "MG";
        f2.cep.cepEndereco       = "123456000";   

//      if (f1 == f2) {
//          System.out.println("iguais");
//      } else {
//          System.out.println("diferentes");        
//      } 
//       
//      System.out.println("salario atual:" + f1.salario);
//      System.out.println("ganho anual:" + f1.calculaGanhoAnual());
        f1.mostra();
        f2.mostra();
    }    
}

Olá Luis! Este NullPointerException ocorre pois você não instanciou o atributo dataEntrada da classe Funcionario. Faça isto e veja se funciona:

DataFuncionario   dataEntradar = new DataFuncionario ();

Assim, a cada funcionário que você criar já será criada uma data de entrada para ele.

Abraços e sucesso nos estudos!

Duvida esclarecida

solução!

Luis, só marque o tópico como solucionado então, assim você ajuda outros colegas com a mesma dúvida.

Abraços!