Olá,
Estou tentando realizar um loop que percorre toda a array "funcionarios", e caso ela tenha alguma referência null, o programa deve adicionar a referência do funcionário "f". No código abaixo, eu previamente preenchi funcionarios[i=0] e [i=3], ou seja, o programa deveria adicionar a referência "x1" em funcionarios[i=1].
class Empresa {
String nome;
String cnpj;
Funcionario[] funcionarios;
void adicionaFuncionario (Funcionario f){
for (int i=0; i < this.funcionarios.length; i++){
if(this.funcionarios[i]!=null){
continue;
}
else {
this.funcionarios[i] = f;
}
}
}
void mostraEmpresa(){
System.out.println("Relacao de funcionarios da Empresa " + this.nome + ":\n\n");
for (int i=0; i < this.funcionarios.length; i++){
if (this.funcionarios[i]==null) continue;
System.out.println(this.funcionarios[i].retornaFuncionario());
}
}
}
class TestaEmpresa {
public static void main(String[] args) {
Empresa coca = new Empresa();
coca.nome = "Coca-Cola";
coca.cnpj = "123456789";
coca.funcionarios = new Funcionario[10];
Funcionario x1 = new Funcionario();
x1.nome = "Paulo";
x1.departamento = "Contabil";
//x1.admissao = 12/01/90;
x1.salario = 5000;
x1.rg = "12345678";
x1.admissao = new Data();
x1.admissao.dia = 12;
x1.admissao.mes = 01;
x1.admissao.ano = 90;
coca.adicionaFuncionario(x1);
coca.funcionarios[0] = new Funcionario();
coca.funcionarios[0].nome = "Joao";
coca.funcionarios[0].departamento = "Contabil";
coca.funcionarios[0].salario = 5000;
coca.funcionarios[0].rg = "12345678";
coca.funcionarios[0].admissao = new Data();
coca.funcionarios[0].admissao.dia = 12;
coca.funcionarios[0].admissao.mes = 01;
coca.funcionarios[0].admissao.ano = 90;
coca.funcionarios[3] = new Funcionario();
coca.funcionarios[3].nome = "Joao";
coca.funcionarios[3].departamento = "Contabil";
coca.funcionarios[3].salario = 5000;
coca.funcionarios[3].rg = "12345678";
coca.funcionarios[3].admissao = new Data();
coca.funcionarios[3].admissao.dia = 12;
coca.funcionarios[3].admissao.mes = 01;
coca.funcionarios[3].admissao.ano = 90;
coca.mostraEmpresa();
}
}
Entretanto, como é esperado, o programa adiciona o Funcionario "x1" em todas as referências null do array funcionarios[10]. Minha ideia foi colocar um break abaixo do else:
void adicionaFuncionario (Funcionario f){
for (int i=0; i < this.funcionarios.length; i++){
if(this.funcionarios[i]!=null){
continue;
}
else {
this.funcionarios[i] = f;
break;
}
}
Imaginei que, após igualar a primeira referência null com o Funcionario "f", o loop interromperia. Porém, o programa não chega nem a fazer essa substituição, mantendo a referência null! Alguém poderia explicar pq o break aparentemente está acontecendo ANTES da substituição, e como resolver esse problema?
Desde já obrigado, Arthur Torres