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

Problema em java

Tenho a classe Empresa que tem um vetor de funcionarios que por fim tem uma variavel data q é uma outra classe. Por algum motivo no meu main, quando eu tento atribuir valor a minha da erro.O que estou fazendo de errado?

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

    void adicionarFuncionario(Funcionario f){
        this.func[this.livre] = f;
        this.livre++;
    }
}

class Funcionario{
    String nome;
    String departamento;
    double salario;
    Data data;
    String rg;

    void aumentaSalario(double valor){
        this.salario += valor;
    }

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

    void mostra(){
        System.out.println("Nome: "+ this.nome);
        System.out.println("Departamento: "+ this.departamento);
        System.out.println("Salario: "+ this.salario);
        System.out.println("Data de Entrada: "+ this.data.getFormatada());
        System.out.println("Rg: "+ this.rg);
    }
}
class Data{
    int dia;
    int mes;
    int ano;

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

}

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


        Funcionario f1 = new Funcionario();
        f1.salario = 400;
        f1.nome = "felipe";
        f1.departamento = "faxina";
        f1.rg = "123123123";
        f1.data.dia = 11;
        f1.data.mes = 03;
        f1.data.ano = 1997;
        empresa.adicionarFuncionario(f1);

        Funcionario f2 = new Funcionario();
        f2.salario = 400;
        empresa.adicionarFuncionario(f2);

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

ERRO:
root@FelipePc:/home/felipe/java/aula 3# java testaEmpresa Exception in thread "main" java.lang.NullPointerException at testaEmpresa.main(funcionario.java:58)
5 respostas

Olá Felipe! Clique no botão {} inserir código logo acima de onde escreve as mensagens e coloque seu código entre os sinas ``` e ```. Assim fica mais fácil a visualização e a interpretação do mesmo.

Coloque a classe com o main também para a gente dar uma olhada.

o main é o testaEmpresa, a ultima classe do codigo

Felipe,

Ao meu ver, você precisa passar uma instancia de um objeto Data para o atributo date, você está atribuindo valores, porém, o seu atributo date precisa de uma referência, ou seja, uma instância.

O correto seria:

Data dataEntrada = new Data();
dataEntrada .dia=11;
dataEntrada .mes=7;
dataEntrada .ano=2016;


f1.data = dataEntrada ;
solução!

Felipe, você esqueceu de instanciar a classe Data e atribuir as datas aos funcionários. Segue a alteração que fiz em sua classe testaEmpresa:

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

        // Alterei aqui:
        Data data = new Data();

        Funcionario f1 = new Funcionario();

        // Alterei aqui:
        f1.data = data;

        f1.salario = 400;
        f1.nome = "felipe";
        f1.departamento = "faxina";
        f1.rg = "123123123";
        f1.data.dia = 11;
        f1.data.mes = 03;
        f1.data.ano = 1997;
        empresa.adicionarFuncionario(f1);

        Funcionario f2 = new Funcionario();

        // Alterei aqui:
        f2.data = data;

        f2.salario = 400;
        empresa.adicionarFuncionario(f2);

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

Testa aí!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software