Problema com exercício 4.12 apostila f11

3 respostas
M

Boa tarde pessoal

Estou fazendo o exercicio do caítulo 4.12 da apostila f11, estou conseguindo fazer tranquilamento, mas empaquei na hora que pediram para retirar o tipo da variável dataEntrada e criar um objeto Data.
Meu código está assim:
Classe Funcionario:

class Funcionario {
	String nome;
	String depto;
	double salario;
	Data dataEntrada;
	String rg;
	boolean estaNaEmpresa = true;
	
	void bonifica(double aumento) {
		this.salario += aumento;
	}
	
	void demite () {
		this.estaNaEmpresa=false;
	}
	
	void mostra() {
		System.out.println("Nome "+ this.nome);
		System.out.println("Departamento " + this.depto);
		System.out.println("Salario " + this.salario);
		System.out.println("RG " + this.rg);
		System.out.println("Esta na empresa: " + this.estaNaEmpresa);
		System.out.println("Dia: " + this.dataEntrada.dia);
		System.out.println("Mes: " + this.dataEntrada.mes);
		System.out.println("Ano: " + this.dataEntrada.ano);
		
	}
}

Classe Data:

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

E o código para com o main:

class TestaFuncionario {
	public static void main(String[] args) {
		Funcionario f1 = new Funcionario();
		
		f1.nome = "Fiodor";
		f1.salario = 100;
		f1.depto = "Administrativo";
		f1.bonifica(50);
		f1.rg = "46.625.123-5 SSP";

		f1.estaNaEmpresa = true;
		f1.mostra();
		
		Funcionario f2 = new Funcionario();
		f2.nome = "Fiodor";
		f2.salario = 100;
		
		Data dt = new Data();
		f1.dataEntrada = dt;
		dt.dia = 1;
		dt.mes = 2;
		dt.ano = 10;
 				
		System.out.println("salario atual "+f1.salario);
		if (f1.estaNaEmpresa==true) {
		System.out.println("Esta na empresa desde " + f1.dataEntrada);
		} else {
		System.out.println("Funcionario demitido");
		}

		if (f1 == f2) {
			System.out.println("Iguais");
		} else {
			System.out.println("Diferentes");
			}
		
	}
}

meu código esta com algumas coisas que não está no enunciado do exercicio, mas que não atrapalha a sua execução ( pelo menos eu acho). Pessoal sempre que estou executando ele está dando um erro no método "mostra", mas não estou conseguindo descrobrir o que pode ser. O erro que aparece é "Exception in thread "main" java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:23) at TestaFuncionario.main(TestaFuncionario.java:12)"

3 Respostas

Eric_Yuzo

O erro está ocorrendo porque dataEntrada está com ponteiro nulo (por isso NullPointerException) quando o método mostra() está sendo chamado.

Você deve especificar a dataEntrada antes de chamar o método mostra():
f1.nome = "Fiodor";
		f1.salario = 100;
		f1.depto = "Administrativo";
		f1.bonifica(50);
		f1.rg = "46.625.123-5 SSP";
		
		//primeiro especifica a data
		Data dt = new Data();
		f1.dataEntrada = dt;
		dt.dia = 1;
		dt.mes = 2;
		dt.ano = 10;

		//Depois disso pode chamar o método mostra()
		f1.estaNaEmpresa = true;
		f1.mostra();
M

Hahaha, muito obrigado cara, tenho que prestar mais atenção hehe

Flavio_machine

Já que ta estudando encapsula sua variaveis de instancia, não entendia muito a muito a necessidade disso mas hj acho muito bom

Criado 2 de outubro de 2010
Ultima resposta 2 de out. de 2010
Respostas 3
Participantes 3