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

Duvida no Ex.2 da Aula 4 - Arrays

Ola pessao, ja faz um bom tempinho que to tentando entender onde esta o erro mas nao consigo.

Quando eu executo o codigo, o programa me mostra o primeiro funcionario tudo certinho, mas com o segundo aparece o seguinte:

Nome: null

Departamento: null

Exception in thread "main" java.lang.NullPointerException 
at Funcionario.mostra(Funcionario.java:20) 
at TesteEmpresa.main(Funcionario.java:88)

MEU CODIGO COMPLETO:

        class Funcionario{

            String nome;
            String departamento;
            double salario;
            Data dataDeEntrada;
            String rg;

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

            double ganhoAnual(){
                return this.salario * 12;
            }

            void mostra(){
                System.out.println("Nome: " + this.nome);
                System.out.println("Departamento: " + this.departamento);
                System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());
                System.out.println("RG: " + this.rg);
                System.out.println("Salario: " + this.salario);
                System.out.println("Ganho anual: " + this.ganhoAnual());
                System.out.println(" " );
            }

        }

        class Data{
            int dia;
            int mes;
            int ano;

            void preencheData (int dia, int mes, int ano){
                this.dia = dia;
                this.mes = mes;
                this.ano = ano;
            }

            String getFormatada(){
                return this.dia + "/" + this.mes + "/" + this.ano;

            }
        }

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

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

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

                Funcionario f1 = new Funcionario();
                        f1.dataDeEntrada = new Data();

                f1.dataDeEntrada.preencheData(8, 3, 2015);    

                f1.nome = "Hugo";
                f1.departamento = "TI";
                f1.salario = 100;
                f1.rg = "ABCD1234";
                f1.aumento(50);
                empresa.adiciona(f1);

                Funcionario f2 = new Funcionario();
                f1.dataDeEntrada = new Data();

                f1.dataDeEntrada.preencheData(8, 3, 2015);    

                f1.nome = "Jeferson";
                f1.departamento = "TI";
                f1.salario = 500;
                f1.rg = "ABCE1234";
                f1.aumento(100);
                empresa.adiciona(f2);

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

Bom dia Jeferson!

Uma dica! Quando for postar um trecho de código, coloque ele entre ` para ficar formatado e facilitar a análise.

solução!

Boa tarde Jeferson,

O problema é que após você criar o funcionário f2, vc continuou chamando o f1 para inserir os dados (f1.dataDeEntrada = new Data();)

Corrija a inserção dos dados no f2 que deve resolver o problema.

Sim eu percebi isso assim que publiquei a duvida. Mas nao consegui eliminar a duvida então ficou ai.

Mas obrigadao por responder.