Prezados, boa noite. Estou com um problema e não consigo ver onde está o erro! Trata-se de um código em Java que deverá imprimir: (a) Funcionários Temporários/Concursados; (b) código do funcionário; (c) anos/meses de contratação; (d) salário acrescido de bonificação por tempo de serviço (anos para Concursado e meses para Temporário) e acrescido também de um adicional por dependente (100 reais para Concursado e 50 reais para Temporário).
insira seu código aqui
import java.util.ArrayList;
public class Funcionario {
public String codigoFuncionario;
public double salarioFuncionario;
public ArrayList<Dependente> dependentes = new ArrayList<Dependente>();
public boolean associaDependente(Dependente d) {
if (dependentes.size() > 5) {
System.out.println("Há um limite de 05 dependentes por funcionário");
return false;
} else {
dependentes.add(d);
}
return true;
}
public int obtemQuantidadeDependentesNaIdadeLimite(int idadeDependente) {
int totalIdade = 0;
for (Dependente d : this.dependentes) {
if (totalIdade < idadeDependente) {
totalIdade++;
}
}
return totalIdade;
}
}
public class FuncionarioConcursado extends Funcionario {
public int anosContratacao;
public FuncionarioConcursado(String codigoFuncionario, double salarioFuncionario, int anosContratacao) {
this.codigoFuncionario = codigoFuncionario;
this.salarioFuncionario = salarioFuncionario;
this.anosContratacao = anosContratacao;
}
public double calculaSalario() {
return this.salarioFuncionario
+ (this.anosContratacao * 200.0 + this.obtemQuantidadeDependentesNaIdadeLimite(21) * 100.0);
}
public void imprime() {
System.out.println("FUNCIONÁRIO CONCURSADO");
System.out.println("Código do funcionário: " + this.codigoFuncionario);
System.out.println("Anos contratação: " + this.anosContratacao);
int somaDependentes = 0;
for (int i = 0; i < this.dependentes.size(); i++) {
if (this.dependentes.get(i) .estaNaIdadeLimite(21) == true) {
somaDependentes ++;
}
}
System.out.println("Dependentes dentro da idade limite: " + this.obtemQuantidadeDependentesNaIdadeLimite(21));
System.out.println("Salário total: " + calculaSalario());
}
}
public class Dependente {
public int idadeDependente;
public boolean estaNaIdadeLimite(int idade) {
if (this.idadeDependente == idade) {
return true;
} else {
return false;
}
}
}
O grande "x" da questão é que podem ser cadastrados o limite de 5 dependentes para cada funcionário (cada dependente gera um acréscimo de bonificação caso seja menor que 21 anos para Concursado e menor que 18 anos para Temporário). O problema n. 1 é que, por exemplo, se eu cadastro 6 dependentes ele só gera o erro de "excedeu dependente" antes de imprimir. O problema n. 2 é que ele está incluindo dependentes de idades que excedem 18/21 anos (mas não todos), ele insere alguns até a idade limite e acaba acrescentando outros que excedem essa idade. A classe FuncionarioTemporario é igual a classe FuncionarioConcursado, mudando apenas os valores.