Boa tarde pessoal,
Tenho o seguinte código:
public class Empresa {
String nome, cnpj;
Funcionario[] empregados = new Funcionario[10];
int i;
void adicionar(Funcionario f,int i){
if (this.empregados[i] == null) {
this.empregados[i] = f;
}
}
void mostraArray (){
for (Funcionario x : empregados){
if (x != null){
System.out.println(x.salario);
}
}
}
boolean contem(Funcionario f) {
if (f.demite() == false){
System.out.println("Funcionário ainda da empresa");
return true;
} else {
return false;
}
}
}
public class TestaEmpresa {
public static void main(String[] args) {
Empresa a = new Empresa ();
Funcionario b = new Funcionario();
b.salario = 2000.0;
a.empregados[2] = b;
for (int i = 0; i < 5; i++) {
Funcionario f = new Funcionario();
f.salario = 1000.0 + i;
a.adicionar(f,i);
a.contem(f);
}
a.mostraArray();
}
}
public class Funcionario {
String nome, departamento, RG, email;
Double salario;
Boolean veioTrabalhar;
Data dtEntrada;
void recebeAumento (double quantidade){
double novoSalario = this.salario + quantidade;
this.salario = novoSalario;
}
double calculaGanhoAnual(){
return this.salario * 12;
}
boolean demite (){
System.out.println("Funcionário demitido");
return true;
}
void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
//utiliza o método dataFormat do objeto Data (dtEntrada é do tipo Data)
System.out.println("Data de entrada: " + this.dtEntrada.dataFormat());
System.out.println("RG: " + this.RG);
System.out.println("Email: " + this.email);
System.out.println("Salário: " + this.salario + "\n");
}
Por algum motivo a linha if (f.demite() == false){ que está dentro do método boolean contem(Funcionario f) está executando o método demite() ao invés de fazer apenas a verificação. Já debuguei algumas vezes mas ainda não entendi a razão. Alguém pode me ajudar por favor?