Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Função que retorna Boolean

Como faço a exibição se o funcionario esta na empresa ou não? Pois se faço como abaixo ele retorna false, como faço para indicar um funcionario existente?

System.out.println(empresa.contem(f2));
boolean contem(Funcionario f) {
        for(int i = 0; i < this.livre; i++){
            if(this.empregados[i] == f){
                return true;
            }        
        }
        return false;
    }
4 respostas

Cleiton, você adicionou o funcionário f2 na empresa? Como está a sua classe de teste?

Bom dia, vou por a classe de teste aqui embaixo, não consigo entender como eu iria referenciar a classe Funcionario fora do for, vamos dizer que eu queira pegar um funcionario e fazer o teste, como eu faria? E que não entendi muito bem isso, pois se eu referenciar para comparar eu ja saberei que o funcionario existe, mas ok. Mas como faço essa referência, preciso entender isso. Obrigado novamente!!

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 f1 = new Funcionario();
            f1.nome = "Cleiton";
            f1.departamento = "Desenvolvimento";
            f1.salario = 1000 + i * 100;
            f1.entradaBanco = new Data();
            f1.entradaBanco.preencheData(12,6,1984);
            f1.RG = "378917239871";
            empresa.adiciona(f1);
        }        

        //como eu faço para referenciar um funcionario fora do for?

        Funcionario f2 = new Funcionario();

        System.out.println(empresa.contem(f2));

    }
}
solução!

Cleiton, pra você pegar referencia fora do for, voce tem que criar a variável f fora dele.

public class Teste {
    public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        Funcionario f = null;

        for(int i = 0; i < 3; i++){
            f = new Funcionario();
            f.nome = "Cleiton " + i;
            empresa.adiciona(f);
        } 
        System.out.println(empresa.contem(f));
        System.out.println(empresa.empregados[0].nome);
        System.out.println(empresa.empregados[1].nome);
        System.out.println(empresa.empregados[2].nome);

        System.out.println(empresa.nomeFuncionaio(f));

    }
}

Depois de criada a variável você vai instanciando os novos funcionários com ela.

Criar funcionários a partir do for não é a maneira certa de se fazer isso, o exercício mostra isso pra explicar que você não poderia colocar o new Funcionario() fora do for. Se voce colocasse todo fora do for, so iria existir um funcionário que ia ser adicionado 3 vezes.

Criando funcionários a partir do for não tem como criar uma variável pra cada um deles, entao você não pode testar o método contem para cada um desses que foi criado no for.

Mas você poderia criar um outro método que buscasse o funcionário pelo o nome, pois no for daria pra mudar o nome de cada instância.

class Empresa{
    \\ resto da classe

    \\método de contém pelo nome
    boolean contem2(String a){
            for(int i = 0; i < this.livre; i++){
                if(this.empregados[i].nome.equals(a)){
                    return true;
                }
            }
            return false;
        }
class testaEmpresa{
    \\resto da classe que eu criei ai em cima

    \\chamando contem2 com o 1 nome criado no for.
    System.out.println(empresa.contem2("Cleiton 0"));

Contudo, a forma ideal de criar um funcionário não é usando for.

O método contem é pra saber se o funcionário foi adicionado a empresa, então você poderia criar um funcionário e não adicioná-lo. Você pode até saber que ele existe ou que você não adicionou ele, mas se eu fosse testar teu código, eu poderia não saber quem foi adicionado ou criado. Por isso o método contem é importante.

Não sei como te agradecer, entendi perfeitamente, meu código está funcionando perfeitamente. O melhor não é responder o exercício é ter a clareza de como funciona, muito obrigado mesmo!!!