Gostaria de saber porque ,no meu exemplo, foi impresso duas vezes o ultimo objeto Funcionários.
public class Empresa {
String nome;
String cpf;
String diretor;
Funcionario[] funcs;
void adicionaEmpregado(Funcionario f){
int i=0;
for (i=0;i<this.funcs.length;i++){
if (this.funcs[i]==null){
this.funcs[i]= new Funcionario();
this.funcs[i].nome=f.nome;
this.funcs[i].departamento=f.departamento;
this.funcs[i].salario=f.salario;
this.funcs[i].dataentrada=f.dataentrada;
//i=this.funcs.length;
return;
}
}
}
void mostraEmpregados(){
for (int i = 0; i < this.funcs.length; i++) {
if (this.funcs[i] != null) {
System.out.println("-Funcionário na posição: " + i);
// preencher para mostrar outras informacoes do funcionario
System.out.println(".Nome:" + this.funcs[i].nome);
System.out.println(".Salario:" + this.funcs[i].salario);
}
}
}
}
public class TestaEmpresa {
public static void main(String [] args){
Empresa empresa=new Empresa();
empresa.funcs = new Funcionario[5];
empresa.nome="XYZ Informática";
empresa.cpf="11111111111111";
empresa.diretor="João Batista";
Funcionario f1=new Funcionario();
empresa.funcs[0]=f1;
f1.nome="Abraao";
f1.departamento="RH";
f1.rg="1234";
f1.dataentrada="01/01/2001";
f1.salario=1500;
empresa.adicionaEmpregado(f1);
Funcionario f2=new Funcionario();
empresa.funcs[1]=f2;
f2.nome="Beto";
f2.departamento="Serviços";
f2.rg="5678";
f2.dataentrada="02/02/2002";
f2.salario=2000;
empresa.adicionaEmpregado(f2);
/*for (int i=0;i<2;i++){
Funcionario f=new Funcionario();
f.salario=1000 + i * 100;
empresa.adicionaEmpregado(f);
}*/
//System.out.println("Empresa:" + empresa.nome + "; Funcionário:" + empresa.funcs[0].nome);
//System.out.println(empresa.funcs[].nome);
empresa.mostraEmpregados();
}
}
RESULTADO: -Funcionário na posição: 0 .Nome:Abraao .Salario:1500.0 -Funcionário na posição: 1 .Nome:Beto .Salario:2000.0 -Funcionário na posição: 2 .Nome:Beto .Salario:2000.0