Erro java.lang.NullPointerException

4 respostas Resolvido
R
Boa noite

Eu não estou conseguindo resolver essa exception.

Ocorre na classe main quando eu insiro as informações

f1.empr.cnpj=4545;

f1.empr.nomeEmpresa=IBM;

O que será eu estou fazendo de errado?

package aula4;

public class TestaEmpresa {

public static void main(String[] args) {
	
	Empresa empresa = new Empresa();	
	empresa.colaboradores=new Funcionario[10];
	Funcionario f1 = new Funcionario();
	
	f1.empr.cnpj="4545";   /* o erro ocorre nesta linha e na debaixo */
	f1.empr.nomeEmpresa="IBM";
	f1.nome="Rafael";
	f1.departamento="IT";
	f1.salario=7000;
	f1.Data(9, 02, 2017);
	f1.rg="43.878.545-5";
	f1.cpf="[CPF removido]";
	
		empresa.adiciona(f1);
		
		empresa.colaboradores[0].mostra();	
}

}


package aula4;

public class Empresa {

String nomeEmpresa;

String cnpj;

Funcionario  colaboradores [];

int livre=0;
void adiciona(Funcionario f){
	this.colaboradores[this.livre]=f;
	this.livre++;
}

boolean contem( Funcionario f){
	for(int i=0; i < this.colaboradores.length;i++ ){
		if(f==this.colaboradores[i]);
		return true;
	}
		return false;
	}
}

package aula4;

public class Funcionario {

String nome;
String departamento;
double salario;
int dia,mes,ano;
String rg;
String cpf;
Empresa empr;


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

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

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


void mostra(){
	System.out.println("Nome: "+nome+"\n"+"Departamento: "+departamento+"\n"+
			          "Salário: "+salario+"\n"+"Data de Entrada: "+dia+"/"+mes+"/"+ano+"\n"+"RG: "+rg+"\n"+"CPF: "+cpf);
			
			
	double aumento=300;
	recebeAumento(aumento);
			
	System.out.println("Você recebeu R$ "+aumento+" de aumento.Agora seu salário é de R$ "+ salario);
		
	System.out.println("Seu ganho anual está em torno de R$ "+calculaGanhoAnual());
}

}

4 Respostas

M
Solucao aceita

Embora você tenha criado um objeto Empresa de nome empresa, em momento algum você atribuiu empresa ao campo empr do objeto f1. Faltou um…

f1,.empr = empresa;

…antes de poder usar o campo f1.empr.

Como f1.empr não foi inicializado, seu valor é nil, o que resulta no NullPointerException quando você tenta usar o f1.empr.

O
Na classe TestaEmpresa:

Ao invés de:

f1.empr.cnpj=4545;

f1.empr.nomeEmpresa=IBM;
Colocar:

empresa.cnpj = 4545;

empresa.nomeEmpresa = IBM;
R

Obrigado Mmassuda, funcionou perfeitamente.

R

Obrigado pela ajuda Oadof.

Criado 21 de fevereiro de 2017
Ultima resposta 21 de fev. de 2017
Respostas 4
Participantes 3