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

NullPointerException

O java acusa NullPointerException nas linhas 13 ( this.func[pos].aniversario.InsereData(dia, mes, ano); ) e 59 ( Colgate.Adiciona(0, "Lucas", "123456789", "TI", 1500.0, 01, 01, 1997); ) Não consigo ver o erro

class Empresa{
    String nome;
    String CNPJ;
    int ref;
    Funcionario[] func;

    void Adiciona(int pos, String nome, String rg, String departamento, double salario, int dia, int mes, int ano){
        this.func[pos] = new Funcionario();
        this.func[pos].nome = nome;
        this.func[pos].rg = rg;
        this.func[pos].departamento = departamento;
        this.func[pos].salario = salario;
        this.func[pos].aniversario.InsereData(dia, mes, ano);
    }
}
class Funcionario{
    String nome;
    String departamento;
    String rg;
    double salario;
    Data aniversario;

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

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

    void mostra (){
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("RG: "+ this.rg);
        System.out.println("Salario: "+this.salario);
        System.out.println("Aniversario:"+ this.aniversario.getFormatada()+"\n");
    }
}
class Data{
    int dia;
    int mes;
    int ano;
    void InsereData (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 a4e1 {
    public static void main(String[] args){
        Empresa Colgate = new Empresa();
        Colgate.nome = "Colgate";
        Colgate.CNPJ = "123456789";
        Colgate.func = new Funcionario[10];
        Colgate.Adiciona(0, "Lucas", "123456789", "TI", 1500.0, 01, 01, 1997);
        Colgate.func[0].mostra();
        Colgate.Adiciona(1, "Karol", "987654321", "TI", 2500.0, 05, 05, 1997);
        Colgate.func[1].mostra();
    }
}
1 resposta
solução!

O objeto Funcionario esta com o atributo aniversario ainda nulo.

        this.func[pos].aniversario.InsereData(dia, mes, ano);

Soluções possíveis:

Na classe funcionario:

class Funcionario{
    String nome;
    String departamento;
    String rg;
    double salario;
    Data aniversario = new Data();

Ou criar um construtor em Data que recebe dia mes e ano

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

   public Data(int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
   }

   void InsereData (int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    String getFormatada (){
        return (this.dia +"/"+ this.mes +"/"+ this.ano);
    }
}

E na classe Empresa voce coloca

class Empresa{
    String nome;
    String CNPJ;
    int ref;
    Funcionario[] func;

    void Adiciona(int pos, String nome, String rg, String departamento, double salario, int dia, int mes, int ano){
        this.func[pos] = new Funcionario();
        this.func[pos].nome = nome;
        this.func[pos].rg = rg;
        this.func[pos].departamento = departamento;
        this.func[pos].salario = salario;
        this.func[pos].aniversario = new Data(dia, mes, ano);
    }
}