Depois que coloquei os modificadores de acesso o comando que imprime todos os funcionários agora só imprime o primeiro
class Empresa{
Funcionario [] funcionarios;
Data[] dataDeAdimissao;
int livre=0;
void adicionaFuncionario(Funcionario f){
this.funcionarios[this.livre]=f;
this.livre++;
}
void setFuncionario(){
for(int i=0; i<this.funcionarios.length; i++){
Funcionario funcionario= this.funcionarios[i];
if(funcionario== null)continue;
System.out.println("Nome do funcionario: "+funcionario.getNome());
System.out.println("Setor do funcionario: "+funcionario.getSetor());
System.out.println("Numero do cracha: "+funcionario.getCracha());
System.out.println("Salario do funcionario: R$" +funcionario.getSalario());
System.out.println("Data de adimmisao: "+ funcionario.dataDeAdimissao.getDia()+"/"+funcionario.dataDeAdimissao.getMes()+"/"+funcionario.dataDeAdimissao.getAno());
System.out.println("");
}
}
boolean contem(Funcionario f){
for( int i=0; i<this.livre; i++){
if(f==this.funcionarios[i]){
return true;
}
}
return false;
}
}
class Funcionario{
private String nome;
private String setor;
private int cracha;
private double salario;
public Data dataDeAdimissao;
void recebeAumento(double aumento){
this.salario+= aumento;
}
double calculaGanhoAnual(double ganho){
return this.salario*12;
}
///////////////////Nome do Funcionario//////////////////////////////
public void setNome(String nomeFuncionario){
this.nome=nomeFuncionario;
}
public String getNome(){
return this.nome;
}
///////////////////Nome do setor//////////////////////////////////
public void setSetor(String nomeSetor){
this.setor=nomeSetor;
}
public String getSetor(){
return this.setor;
}
//////////////////////Numero do crachá//////////////////////////////
public void setCracha(int numeroCracha){
this.cracha=numeroCracha;
}
public int getCracha(){
return this.cracha;
}
///////////////////////Valor do salário////////////////////////////
public void setSalario(double valorSalario){
this.salario=valorSalario;
}
public double getSalario(){
return this.salario;
}
public Data getAdimissao(){
return this.dataDeAdimissao;
}
}
class Data{
private int dia;
private String mes;
private int ano;
//////////////////////Dia do contrato/////////////////////////////
public void setDia(int novoDia){
this.dia=novoDia;
}
public int getDia(){
return this.dia;
}
//////////////////////Mes do contrato///////////////////////////////////
public void setMes(String novoMes){
this.mes=novoMes;
}
public String getMes(){
return this.mes;
}
///////////////////Ano do contrato//////////////////////////////
public void setAno(int novoAno){
this.ano=novoAno;
}
public int getAno(){
return this.ano;
}
}
class principal{
public static void main(String args[]){
Empresa fablab= new Empresa();
fablab.funcionarios= new Funcionario[10];
fablab.dataDeAdimissao= new Data[10];
Funcionario mauricio= new Funcionario();
mauricio.dataDeAdimissao= new Data();
fablab.funcionarios[0] = new Funcionario();
fablab.dataDeAdimissao[0]= new Data();
fablab.dataDeAdimissao[0].setDia(1);
fablab.dataDeAdimissao[0].setMes("Outubro");
fablab.dataDeAdimissao[0].setAno(2010);
fablab.funcionarios[0].setNome("Mauricio Akbar");
fablab.funcionarios[0].setSetor("Faxina");
fablab.funcionarios[0].setCracha(34567);
fablab.funcionarios[0].setSalario(1000.0);
Funcionario guilherme= new Funcionario();
guilherme.dataDeAdimissao= new Data();
fablab.funcionarios[1]= new Funcionario();
fablab.dataDeAdimissao[1]= new Data();
fablab.funcionarios[1].setNome("Guilherme Xispirito");
fablab.dataDeAdimissao[1].setDia(1);
fablab.dataDeAdimissao[1].setMes("Janeiro");
fablab.dataDeAdimissao[1].setAno(2010);
fablab.funcionarios[1].setSetor("Vendas");
fablab.funcionarios[1].setCracha(171);
fablab.funcionarios[1].setSalario(2500.0);
fablab.setFuncionario();
}
}
E o erro que aparece é Exception in thread "main" java.lang.NullPointerException at Empresa.setFuncionario(metodo.java:20) at principal.main(funcionario.java:42)