Null pointer exception

Boa tarde a todos

O programa abaixo é a resolução de um dos exercícios da apostila fj11 da Caelum, mas estou com um problema que não consigo compreender. Tudo está funcionando bem, mas quando digito um funcionário inexistente o método contemFunc da classe Empresa não retorna o false e recebo um null pointer exception.

Se alguém identificar o erro seria de grande ajuda.

Obrigado


public class Empresa {
	public Funcionario[] funcionarios = new Funcionario[10];
	public String nome;
	public String cnpj;
	
	public void adicionaFuncionario(Funcionario obj, int i){
				this.funcionarios[i] = obj;
	}
	
	public void mostraEmpregados(){
		System.out.println("==========================================================================");
		System.out.println(this.nome + " - CNPJ: " + this.cnpj + " - LISTAGEM DE FUNCIONARIOS");
		System.out.println("==========================================================================");
		for(Funcionario obj : this.funcionarios){
			if(obj == null){
				break;
			}
			System.out.println("Nome: " + obj.nome);
			System.out.println("CPF: " + obj.cpf);
			System.out.println("Setor: " + obj.setor);
			System.out.println("Salário: " + obj.slr + "\n");
		}
	}
	
	public boolean contemFunc(String nome){
		for(Funcionario obj : funcionarios){
			if(obj.nome.equals(nome)){
				return true;
			}
		}//fim do for
		return false;
	}
}

//-------------------------------------------------------------------------------------------------------------------------------------------------------

package dados;

public class Funcionario {
	public String nome;
	public String cpf;
	public String setor;
	public double slr;
	
	public void mostraFuncionario(){
		System.out.println("Nome: " + this.nome);
		System.out.println("CPF: " + this.cpf);
		System.out.println("Setor: " + this.setor);
		System.out.println("Salário: " + this.slr + "\n");
	}
	
}


//-------------------------------------------------------------------------------------------------------------------------------------------------------

package usuario;

import java.util.*;
import dados.Empresa;
import dados.Funcionario;

public class Usuario {
	public static void main(String args[]){
		Scanner leia = new Scanner (System.in);
		
		Empresa objEmp = new Empresa();
		System.out.print("Nome da empresa: ");
		objEmp.nome = leia.nextLine();
		System.out.print("CNPJ: ");
		objEmp.cnpj = leia.nextLine();
		
		int cont = 0;
		for(int i = 0; i < objEmp.funcionarios.length; i++){
			Funcionario objFunc = new Funcionario();
			System.out.println("Entre com os dados do "  + (cont + 1) + "º funcionário.");
			System.out.print("Nome: ");
			objFunc.nome = leia.nextLine();
			System.out.print("CPF: ");
			objFunc.cpf = leia.nextLine();
			System.out.print("Setor: ");
			objFunc.setor = leia.nextLine();
			System.out.print("Salário R$");
			objFunc.slr = leia.nextDouble();
			objEmp.adicionaFuncionario(objFunc, i);
			cont++;
			System.out.print("Inserir novo funcionário(s/n)?");
			char opcao = leia.next().charAt(0);
			if(opcao == 'n' || opcao == 'N'){
				break;
			}
			System.out.println("");
			leia.nextLine();//limpeza de buffer
		}
		
		System.out.print("Deseja mostrar os funcionários cadastrados(s/n)?");
		char opcao = leia.next().charAt(0);
		if(opcao == 's' || opcao == 'S'){
			objEmp.mostraEmpregados();
			leia.nextLine();//limpeza de buffer
		}
		
		while(true){
			System.out.println("\n================Pesquisa de funcionários================");
			System.out.print("Entre com o nome a ser pesquisado: ");
			String nome = leia.nextLine();
			System.out.println("TESTE DE RETORNO: " + objEmp.contemFunc(nome));
			if(objEmp.contemFunc(nome)){
				System.out.println(nome + " faz parte do nosso quadro de funcionários");
			} else {
				System.out.println(nome + " não faz parte do nosso quadro de funcionários");
			}
			System.out.print("Deseja fazer uma nova pesquisa(s/n)?");
			char novaPesq = leia.next().charAt(0);
			if(novaPesq == 'n' || novaPesq == 'N'){
				break;
			} 
			leia.nextLine();//limpeza de buffer
			
		}
		
	}
		

}


Sua comparação no método contemFunc pode ser assim:

...
if(obj != null && obj.nome != null && obj.nome.equals(nome)){
    return true;
}
...
1 curtida

Obrigado, assim funcionou perfeitamente.