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
}
}
}