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

Metodo contem () retorna sempre false

Olá pessoal,

Estava terminando o exercício 6 da aula 4 (sobre uso de arrays) e estou tendo problemas com o resultado do metodo contem().

Acontece que mesmo eu criando um novo objeto e fazendo um dos endereços do vetor apontar pra ele, mesmo assim o resultado do método é false.

Eu inclusive testei as referencias antes, pra ver se elas apontavam para o mesmo objeto.

Segue o código:

public class Empresa {
    String nome;
    String cnpj;
    Funcionario [] equipe = new Funcionario [5];
    int livre = 0;

    void adicionar (Funcionario f1){
        this.equipe [livre] = f1;
        livre++;
    }

    void mostraSalario(){
        for (int i = 0; i < this.equipe.length; i++){
            System.out.printf("Funcionario na posicao %d \n", i);
            System.out.printf("Salario: %.2f", this.equipe[i].salario);
            System.out.printf("\n\n\n");
        }
    }

    void mostraTudo (){
        for (int i = 0; i < equipe.length; i++){
            this.equipe[i].mostra();
            System.out.printf("\n\n\n");
        }
    }

    boolean contem (Funcionario f1) {
        for(int i = 0; i > this.equipe.length; i++){
            if (this.equipe[i] == f1){
                return true;
            }
        }    
        return false;
    }

}// fim da classe

Executável:

public class TestaEmpresa {

    public static void main(String[] args) {
        Empresa emp = new Empresa ();

        for (int i = 0; i < emp.equipe.length; i++){
            Funcionario f1 = new Funcionario();
            emp.adicionar(f1);
            emp.equipe[i].salario = i*100;
        }

        Funcionario fun = new Funcionario();

        emp.equipe[4] = fun;

        boolean teste = emp.contem(fun);

        System.out.println(teste);

        if (emp.equipe[4] == fun){
            System.out.println("variaveis iguais");
        }

        if (teste == true){
            System.out.println("Funcionario esta na empresa");
        } else {
            System.out.println("Funcionario nao trabalha na empresa");
        }

    }// fim de main

}//fim da classe

E essa é a saída do programa:

false

variaveis iguais

Funcionario nao trabalha na empresa

Observem que mesmo eu testando se emp.equipe [4] == fun (e o resultado mostra que elas são iguais), o resultado do método ainda é false. O que foi que eu fiz de errado?

Grato desde já.

2 respostas
solução!

//broder blza, me parece que o seu for no método: // boolean contem (Funcionario f1) { .... // esta com a segunda seção do opcional de controle com o // sinal invertido , teria que ser: i < this.equipe.length

/ boolean contem (Funcionario f1) { for(int i = 0; i > this.equipe.length; i++){ /

Nossa, verdade, distração minha. Sou novo na programação em geral, ainda não aprendi a fazer as coisas com calma. Vou ter mais cuidado na próxima vez.

Obrigado! :)