Estou com dúvida no seguinte código: eu criei um método adicionaFuncionario que verifica qual a próxima posição livre em um array e insere um funcionário. Mas o código abaixo especifica um array com 10 posições e eu faço 12 inserções de funcionários com o método criado. O Java insere os 10 primeiros funcionários e descarta os 2 últimos, sem me mostrar nenhuma mensagem de erro. Por que isso é assim?
class Funcionarios {
String nome;
String cpf;
String rg;
}
class Empresas {
String nome;
Funcionarios[] funcionario;
void adicionaFuncionario(String nome, String cpf, String rg) {
int posicao_livre = 0;
for (int i = 0; i < this.funcionario.length; i++) {
if ( this.funcionario[i] == null) {
posicao_livre = i;
break;
}
}
this.funcionario[posicao_livre] = new Funcionarios();
this.funcionario[posicao_livre].nome = nome;
this.funcionario[posicao_livre].cpf = cpf;
this.funcionario[posicao_livre].rg = rg;
}
void dadosDaEmpresa() {
System.out.println("Empresa: " + this.nome);
for (int i = 0; i < this.funcionario.length; i++) {
if ( this.funcionario[i] == null) {
continue;
} else {
System.out.println(i+1 + " -- " + this.funcionario[i].nome + " (CPF: " + this.funcionario[i].cpf + "; RG: " + this.funcionario[i].rg + ")");
}
}
}
}
class Programa2 {
public static void main (String[] args) {
Empresas pj = new Empresas();
pj.nome = "Minha Empresa";
pj.funcionario = new Funcionarios[10];
pj.adicionaFuncionario("Zé Goiaba", "123.456.789-01", "123.456");
pj.adicionaFuncionario("Zé Ruela", "234.567.890-12", "234.567");
pj.adicionaFuncionario("Goiabão", "345.678.901-23", "345.678");
pj.adicionaFuncionario("Ruelão", "456.789.012-34", "456.789");
pj.adicionaFuncionario("Goiaba Ruela", "567.890.123-45", "567.890");
pj.adicionaFuncionario("Zé Goiaba", "123.456.789-01", "123.456");
pj.adicionaFuncionario("Zé Ruela", "234.567.890-12", "234.567");
pj.adicionaFuncionario("Goiabão", "345.678.901-23", "345.678");
pj.adicionaFuncionario("Ruelão", "456.789.012-34", "456.789");
pj.adicionaFuncionario("Goiaba Ruela", "567.890.123-45", "567.890");
pj.adicionaFuncionario("Zé Goiaga", "123.456.789-01", "123.456");
pj.adicionaFuncionario("Zé Goiaga", "123.456.789-01", "123.456");
pj.dadosDaEmpresa();
}
}