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

Exception in thread "main" java.lang.NullPointerException at programa.main(Main.java:53)

Não consigo perceber o erro no código:

import java.util.Date;

class Empresa {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;
    double salarioanual;
    Data dataDeEntrada;



    void recebeaumento (double reais){
        this.salario += reais;
    }

    void ganhoanual (){
        salarioanual = 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.dataDeEntrada);
        System.out.println("RG: " + this.entrada);
        System.out.println("Salario Anual: " + this.salarioanual);
        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;
    }
}


class programa {
    public static void main(String[] args){
        Empresa roberto = new Empresa ();
        roberto.nome = "Roberto De Lima Salimena";
        roberto.departamento = "T.I";
        roberto.salario = 6500;
        roberto.dataDeEntrada.preenchedata(9,10,2014);
        roberto.rg = "0516160";



        roberto.recebeaumento(100);
        roberto.ganhoanual();

        roberto.mostra();

        Empresa marcelo = new Empresa();
        marcelo.nome = "Marcelo";
        marcelo.departamento = "T.I";
        marcelo.salario = 7500;
        marcelo.entrada = "01/02/17";
        marcelo.rg = "166511";

        marcelo.mostra();


        if (roberto == marcelo){
            System.out.println("São Iguais");
        } else {
            System.out.println("São diferentes");
        }


    }
}
5 respostas

Olá Luhan,

Em nenhum momento você está dando new na classe Data, então quando você chama o trecho roberto.dataDeEntrada.preenchedata(9,10,2014); ele dá erro.

Só para testar cria a classe Data no constructor da classe Empresa

Empresa(){
    dataDeEntrada = new Data();
}

Adciona esse trecho logo após a declaração das variáveis.

Espero ter ajudado

Adicionei a chamada do data logo depois de declarar as variáveis e deu esse erro

Error:(11, 18) java: <identifier> expected

Você poderia postar o código para eu dar uma olhada?

Aqui esta:

import java.util.Date;

class Empresa {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;
    double salarioanual;
    Data dataDeEntrada;




    void recebeaumento (double reais){
        this.salario += reais;
    }

    void ganhoanual (){
        salarioanual = 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.dataDeEntrada);
        System.out.println("RG: " + this.entrada);
        System.out.println("Salario Anual: " + this.salarioanual);
        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;
    }
}


class programa {
    public static void main(String[] args){
        Empresa roberto = new Empresa ();
        roberto.nome = "Roberto De Lima Salimena";
        roberto.departamento = "T.I";
        roberto.salario = 6500;
        roberto.dataDeEntrada.preenchedata(9,10,2014);
        roberto.rg = "0516160";




        roberto.recebeaumento(100);
        roberto.ganhoanual();

        roberto.mostra();

        Empresa marcelo = new Empresa();
        marcelo.nome = "Marcelo";
        marcelo.departamento = "T.I";
        marcelo.salario = 7500;
        marcelo.entrada = "01/02/17";
        marcelo.rg = "166511";

        marcelo.mostra();


        if (roberto == marcelo){
            System.out.println("São Iguais");
        } else {
            System.out.println("São diferentes");
        }


    }
}
solução!

Olá Luhan,

Não achei a sua implementação do constructor, mas segue a minha:

class Empresa {
    String nome;
    String departamento;
    double salario;
    String entrada;
    String rg;
    double salarioanual;
    Data dataDeEntrada;


    Empresa(){
            dataDeEntrada = new Data();
    }

    void recebeaumento (double reais){
        this.salario += reais;
    }

    void ganhoanual (){
        salarioanual = 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.dataDeEntrada);
        System.out.println("RG: " + this.entrada);
        System.out.println("Salario Anual: " + this.salarioanual);
        System.out.println(" ");


    }

}

Espero que dê certo.