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

Ex 6: Erro ao compilar "Exception in thread "main" java.lang.NullPointerException"

Olá, sou novo no mundo JAVA e estou tentando realizar o exercício 6 do capitulo número 3 porém não estou conseguindo.

Eu consigo compilar normalmente sem nenhum erro, porém, ao tentar executar o o seguinte erro me aparece: "└──> $ java Programa O funcionário João da Silva recebe R$1500.0 O ganho anual dele é de R$18000.0 Porém, ele recebeu um aumento, e agora o seu salário é de R$2000.0 Nome: João da Silva RG: 50.785.554-0 Exception in thread "main" java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:20) at Programa.main(Funcionario.java:62)"

Para que vocês consigam me ajudar, segue abaixo o código fonte do sisteminha:

class Funcionario { String nome; String rg; String dataDeAdmissao; double salario; double salarioAnual; Data dataNascimento;

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

void calculaGanhoAnual () { this.salarioAnual = this.salario * 12; }

void mostra() { System.out.println("Nome: " + this.nome); System.out.println("RG: " + this.rg); System.out.println("Dia de Nascimento:" + dataNascimento.dia); System.out.println("Mês de Nascimento:" + dataNascimento.mes); System.out.println("Ano de Nascimento:" + dataNascimento.ano); System.out.println("Data de Admissão: " + this.dataDeAdmissao); System.out.println("Salário: " + this.salario); System.out.println("Salário Anual: " + this.salarioAnual); } }

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

void preencheData (int diaMet, int mesMet, int anoMet) { this.dia = diaMet; this.mes = mesMet; this.ano = anoMet; } }

class Programa { public static void main (String[] args) {

Funcionario func = new Funcionario(); Data nascimento = new Data(); nascimento.preencheData(15, 11, 1995); func.nome = "João da Silva"; func.rg = "50.785.554-0"; func.dataDeAdmissao = "01/06/2015"; func.salario = 1500.0;

System.out.println("O funcionário " + func.nome + " recebe R$" + func.salario);

func.calculaGanhoAnual(); System.out.println("O ganho anual dele é de R$" + func.salarioAnual);

func.recebeAumento(500.0);

System.out.println ("Porém, ele recebeu um aumento, e agora o seu salário é de R$" + func.salario);

func.mostra(); } }

5 respostas

Olá Glenderson! Poste seu código entre os sinais ``` e ```. É só clicar no botão {} inserir código logo acima de onde escreve a mensagem.

solução!

Glenderson, consegui visualizar aqui. Está faltando uma instrução no seu código da classe Programa, a instrução que relaciona nascimento a func. Segue abaixo:

// trecho de código omitido

Funcionario func = new Funcionario();
Data nascimento = new Data();

func.dataNascimento = nascimento; // instrução faltante

// trecho de código omitido

Testa aí e nos dê um alô!

Abraços!

André Alexandre, muito obrigado pelo feedback quase que instantâneo! E valeu pela observação dos códigos também :D

Caraca, você acertou!! Mas eu não entendi ao certo o que essa linha de comando realizou...poderia me explicar?

Abraço!

Você instanciou um funcionário e uma data de nascimento, correto? Mas é preciso relacionar os dois, ou como o método mostra() iria saber qual data de nascimento imprimir na tela, de qual funcionário? Sempre que tivermos duas instâncias e elas estão relacionadas é preciso fazer essa atribuição de variáveis. Entendeu?

Olá Glenderson! Conseguiu solucionar sua dúvida? Se sim, marque o tópico como solucionado, assim você ajuda outros colegas com a mesma dúvida.

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