Caelum FJ-11 - Array com Foreach

Ola sou novo no fórum e estou com uma duvida sobre um exercício da apostila FJ-11 com o uso do Foreach!
gostaria de saber como mostrar os atributos dos Funcionários no metodo mostraEmpregados(); criados no array
usando o Foeach e se é possível pois para mim ele aparece apenas a 1 referencia ao objeto do 1 indice,
mas criei 3 referencias dos 5 índices entao as seria para aparecer os atributos das 3 primeiras referencias
f1,f2,f3 e as outras 2 iriam mostrar o endereço de memoria no caso por não utilizá-las
da uma ajuda ai ,código abaixo:

public class Empresa {
   String cnpj;
   Funcionario[] empregados =new Funcionario[5];
   
   void adiciona(Funcionario f){
	   for(int i =0;i< empregados.length; i++){
		    if(empregados[i] == null){
		    	this.empregados[i] = f;
		        break;
		    }
	   }
  }
   
   void mostraEmpregados(){
	   for(Funcionario item : empregados){
		  System.out.println("nome: "+item.nome+" Salario de: "+item.salario);
	   }
   }
}

public class Funcionario {
   String nome;
   double salario;
}


public class Principal {

	public static void main(String[] args) {
		Empresa empresa = new Empresa();
	  
		 Funcionario f1 =new Funcionario();
		 f1.nome="Rafael";     
		 f1.salario= 5500;
		 Funcionario f2 =new Funcionario();
		 f2.nome="Rodrigo";    
		 f2.salario= 4600;
		 Funcionario f3 =new Funcionario();
		 f3.nome="Luana";
		 f3.salario=4100;
		 
		 empresa.adiciona(f1);
		 empresa.adiciona(f2);
		 empresa.adiciona(f3);
		
		 empresa.mostraEmpregados();
  }
}

o erro que aparece é o seguinte:
nome: Gustavo Salario de: 4100.0

Exception in thread “main” java.lang.NullPointerException
at empresa.Empresa.mostraEmpregados(Empresa.java:18)
at empresa.Principal.main(Principal.java:22)

** sei que de alguma forma teria de usar o this. para ter a referência ao funcionário do indice
mas n permite usar o this.item.nome por exemplo rs da uma forca ai 0/

eu alterei o nome do f3.nome para “Gustavo” mas colei como Luana desconsiderem isto rs,
só aparece a 3 referencia e não o resto…

A seu algoritmo está lançando Null Pointer Exception devido ao For Each estar iterando sobre o Seu Array de 5 posições,
Só que tem o detalhe de que você so preencheu ele com 3 funcionários.
e Tem 2 Posições com valor NULL, esta é a explicação para o erro.

Cadastre mais 2 funcionários e veja o que acontece.

ou

void mostraEmpregados(){
	for(Funcionario item : empregados){
	    if(item != null)	    
	    System.out.println("nome: "+item.nome+" Salario de: "+item.salario);
	}
    }
1 curtida

deu certinho aqui rs ,com esse if resolve tudo caso tenha um vetor ou matriz onde nem todos os índices estarão seno utilizados …muito obrigado pela ajuda 0/

1 curtida

Exatamente, de nada , so não esqueça de fechar o tópico.:slight_smile:
Qualquer coisa pergunta mais ai.Vamos ajudando.
T+

blz,vou postar minhas duvidas aqui no fórum foi muito esclarecedor para mim obrigado!

1 curtida

so não to conseguindo achar onde que encerra o tópico rs