Bom tarde a todos estou estudando a apostila FJ-11 Java e Orientação a Objetos da Caelum na pagina 73 exercício 4 alterar o laço para o novo for do Java 5.0, até o momento não consegui ter sucesso na chamada do método. segue toda a estrutura que estou desenvolvendo para resolver o exercício.
Estou com problemas para chamar o método —> mostraempregados() da class Empresa a partir da class TestaEmpresa —> empresa.mostraEmpregados(empresa.empregados[])
Alguem pode me ajudar a consertar este código
class Empresa {
String nome;
String cnpj;
Funcionario[] empregados;
int a;
void adiciona(Funcionario f) {
a += 1;
this.empregados[a - 1] = f;
}
// este metodo funciona normal
/* void mostraEmpregados() {
for (int i = 0; i < this.empregados.length; i++) {
System.out.println("Funcionário na posição: " + i);
//System.out.println("Salario: " + this.empregados[i].salario);
empregados[i].mostra();
}
}
*/
// porque o metodo não consigo converter o metodo acima para
// o novo for do java 5.0
void mostraEmpregados(int[] empregados) {
for (int x : empregados) {
System.out.println(empregados[x]);
}
}
}
class TestaEmpresa {
public static void main(String[] args) {
Empresa empresa = new Empresa();
empresa.empregados = new Funcionario[10];
for (int i = 0; i < 10; i++) {
Funcionario f = new Funcionario();
f.salario = 1000 + i * 100;
f.contrata();
empresa.adiciona(f);
}
// qual argumento devo passar aqui para solucionar o erro
empresa.mostraEmpregados(empresa.empregados[]);
}
}
class Funcionario {
String nome;
Data dataNascimento;
String cpf;
String rg;
Data dataAdimicao;
String departamento;
String cargo;
double salario;
char estaAtivo;
Data dataDemicao;
void recebeAumento(double aumento) {
salario += aumento;
}
double calculaGanhoAnual() {
return this.salario * 12;
}
boolean contrata() {
if (this.estaAtivo != 'S') {
this.estaAtivo = 'S';
this.dataAdimicao = new Data();
this.dataAdimicao.dia = 15;
this.dataAdimicao.mes = 07;
this.dataAdimicao.ano = 2016;
this.departamento = "Elétrica";
this.cargo = "Téc. Eletroeletrônica I";
this.salario = 3159.19;
this.dataDemicao = new Data();
this.dataDemicao.dia = 0;
this.dataDemicao.mes = 0;
this.dataDemicao.ano = 0;
return true;
}
else {
return false;
}
}
boolean demite() {
if (this.estaAtivo != 'N') {
this.estaAtivo = 'N';
this.dataAdimicao = new Data();
this.dataAdimicao.dia = 0;
this.dataAdimicao.mes = 0;
this.dataAdimicao.ano = 0;
this.dataDemicao = new Data();
this.dataDemicao.dia = 16;
this.dataDemicao.mes = 07;
this.dataDemicao.ano = 2016;
this.departamento = "";
this.cargo = "";
this.salario = 0.0;
return true;
}
else {
return false;
}
}
boolean transfFuncDepar() {
if (this.estaAtivo == 'S' && this.departamento !="Mecânico") {
this.departamento = "Mecânico";
return true;
}
else {
return false;
}
}
void mostra() {
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("Salário: " + this.salario);
System.out.println("RG: " + this.rg);
System.out.println("Ganho Anual: " + this.calculaGanhoAnual());
System.out.println("Cargo/Função: " + this.cargo);
System.out.println("Data de Adimição: " + this.dataAdimicao.formataData());
System.out.println("Data de Demição: " + this.dataDemicao.formataData());
}
}
class Data {
int dia;
int mes;
int ano;
String formataData() {
return dia + "/" + mes + "/" + ano;
}
}