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

Dúvida no Ex. 3 da Aula 4 - Arrays

Opa, boa tarde.

Estou empacado nesse exercício...rs

Segue o erro que me retorna:

Exception in thread "main" java.lang.NullPointerException at src.TestaFuncionario.main(TestaFuncionario.java:16)

Segue meus codigos:

Empresa.java

'''public class Empresa {

String nome; String endereco; String dono; String cnpj; Funcionario[] empregados; int livre = 0;

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

} '''

Funcionario.java

''' class Funcionario { String nome; String departamento; int idade; String rg; Data inicio; double salario;

void promocao(String promocaoFuncionario){ departamento = promocaoFuncionario; }

void aumento (double recebeAumento ){ salario += recebeAumento; }

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

void mostra (){ System.out.println ("Nome: " + this.nome ); System.out.println ("Idade: " + this.idade ); System.out.println ("RG: " + this.rg ); System.out.println ("Departamento: " + this.departamento ); System.out.println ("Data de inicio: " + this.inicio.getFormatada()); System.out.println ("Salario: " + this.salario ); System.out.println ("Salario anual: " + this.calculaGanhoAnual()); } } '''

Data.java

'''public 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; }

}'''

TesteFuncionario.java

'''public class TestaFuncionario {

public static void main ( String [] args){

Empresa marru = new Empresa(); marru.empregados = new Funcionario[5];

Funcionario marcio = new Funcionario(); marcio.nome = "Marcio Oggiam"; marcio.idade = 30; marcio.salario = 10000; marcio.rg = "1234556"; marcio.departamento = "TI"; marcio.inicio.preencheData(05, 05, 2015); marru.adiciona(marcio);

Funcionario veio = new Funcionario(); veio.nome = "Antonio"; veio.idade = 99; veio.salario = 20000; veio.rg = "1"; veio.departamento = "Chefe de obra"; veio.inicio.preencheData(02, 05, 2015); marru.adiciona(veio);

Funcionario marciopai = new Funcionario(); marciopai.nome = "Marcio Pai"; marciopai.idade = 52; marciopai.salario = 80000; marciopai.rg = "2222"; marciopai.departamento = "Presidente"; marciopai.inicio.preencheData(02, 05, 2015); marru.adiciona(marciopai);

marru.empregados[0].mostra(); marru.empregados[1].mostra(); marru.empregados[2].mostra();

} }'''

3 respostas

Opa não foi a formatação, vou tentar novamente!

Empresa.java

public class Empresa {

String nome; String endereco; String dono; String cnpj; Funcionario[] empregados; int livre = 0;

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

}

Funcionario.java

String nome;
    String departamento;
    int idade;
    String rg;
    Data inicio;
    double salario;

    void promocao(String promocaoFuncionario){
        departamento = promocaoFuncionario;        
    }

    void aumento (double recebeAumento ){
        salario += recebeAumento;
    }

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

    void  mostra (){
        System.out.println ("Nome: " + this.nome );
        System.out.println ("Idade: " + this.idade );
        System.out.println ("RG: " + this.rg );
        System.out.println ("Departamento: " + this.departamento );
        System.out.println ("Data de inicio: " + this.inicio.getFormatada());
        System.out.println ("Salario: " + this.salario );
        System.out.println ("Salario anual: " + this.calculaGanhoAnual());
    }
}

Data.java

public 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;
    }

}

TesteFuncionario.java

public static void main ( String [] args){

        Empresa marru = new Empresa();
        marru.empregados = new Funcionario[5];

        Funcionario marcio = new Funcionario();
        marcio.nome = "Marcio Oggiam";
        marcio.idade = 30;
        marcio.salario = 10000;
        marcio.rg = "1234556";
        marcio.departamento = "TI";
        marcio.inicio.preencheData(05, 05, 2015);
        marru.adiciona(marcio);

        Funcionario veio = new Funcionario();
        veio.nome = "Antonio";
        veio.idade = 99;
        veio.salario = 20000;
        veio.rg = "1";
        veio.departamento = "Chefe de obra";
        veio.inicio.preencheData(02, 05, 2015);
        marru.adiciona(veio);


         Funcionario marciopai = new Funcionario();
         marciopai.nome = "Marcio Pai";
         marciopai.idade = 52;
         marciopai.salario = 80000;
         marciopai.rg = "2222";
         marciopai.departamento = "Presidente";
         marciopai.inicio.preencheData(02, 05, 2015);
         marru.adiciona(marciopai);

         marru.empregados[0].mostra();
         marru.empregados[1].mostra();
         marru.empregados[2].mostra();


    }
}
solução!

Boa noite Marcio, Este erro está ocorrendo porque o atributo/variável "inicio" do tipo Data, não foi instanciado, ou seja, não foi efetivamente criado em memória, tente colocar na declaração do atributo " = new Data();":

class Funcionario {
    String nome;
    String departamento;
    int idade;
    String rg;
//-------------------------------
    Data inicio = new Data();
//-------------------------------
    double salario;

Bom dia Allister,

Era isso mesmo, rodou certinho agora, muito obrigado pela ajuda!

Abraços.