Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro em Exception no Ex.6

Saudacoes , segue o codigo , o maior problema é na hora de setar a data , pois o caminho para os outros atributos está funcionando , porem somente este gera erro , é pela tentativa de acessar um objeto que não existe ? Agradeco

Classe Funcionario


public class Funcionario {
    String nome;
    String departamento;
    double salario;
    String dataEntrada;
    String rg;   
    Data dataDeEntrada;

    public void mostra(){
        System.out.println(this.nome+"\n"+
                this.departamento+"\n"+
                this.dataEntrada+"\n"+
                this.rg+"\n"+
                this.salario+" R$"+
                dataDeEntrada.getData());      
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }   
    public void setRg(String rg) {
        this.rg = rg;
    }     
    double recebeAumento(double aumento){
        this.salario=this.salario+aumento;
        return this.salario;
    }
    double calculaGanhoAnual(){
        return this.salario*12;
    }
}
class Data {
    String dia,mes,ano,dataFinal;
    void setData(String d,String m ,String a){
        this.dia=d;
        this.mes=m;
        this.ano=a; 
        dataFinal=(this.dia+"/"+this.mes+"/"+this.ano);
    }   
    String getData(){
        return dataFinal;
    }
}

E aqui a classe com main para testar

public class Testa {
    public static void main(String[] args) {
        Funcionario Marcelo = new Funcionario();


        Marcelo.setNome("Marcelo");

        Marcelo.setRg("11111-8");
        Marcelo.setDepartamento("TI");
        Marcelo.recebeAumento(3000.0);
        Marcelo.dataDeEntrada.setData("31","07","1998");       
        Marcelo.mostra();
        Marcelo.dataDeEntrada.setData("5","1","54");

    }
}
1 resposta
solução!

Olá Marcelo, tudo Bem?

Você matou a charada, o nullpointerexception ocorre exatamente pelo fato da dataDeEntrada pertencente a sua classe Data não ter sido iniciada ainda.

Existem algumas formas de fazer isso, uma delas é inicial-la no construtor de Funcionário:

public Funcionario(){
    this.dataDeEntrada= new Date();
}

ou na definição do campo dataDeEntrada:

public class Funcionario {
        String nome;
        String departamento;
        double salario;
        String dataEntrada;
        String rg;

        Data dataDeEntrada = new Data();

        //restante da classe
}

Espero ter ajudado e esperamos o feedback,

Bons estudos

Jéfferson Desozua