2
respostas

Java parte 6 topico um final da aula retorno true

Bom dia no curso java parte 6 topico com um estou com dificuldade para finalizar o exercicio na aula quando ela sub escreve o metedo da classe Object para criar o proprio metodo

//Sub escrita da classe Object 
@Override
    public boolean equals(Object ref) {

        Conta outra = (Conta) ref;

        if(this.agencia != outra.agencia) {
            return false;
        }

        if(this.numero != outra.numero) {
            return false;
        }

        return true;
    }
// Classe main 
package br.com.byteBank.banco.Teste.Util;

import java.util.ArrayList;

import br.com.byteBank.banco.Modelo.Conta;
import br.com.byteBank.banco.Modelo.ContaCorrente;

public class TesteArrayListEquals {

    public static void main(String[] args) {

        ArrayList< Conta > lista = new ArrayList  < Conta> ();

        Conta cc = new ContaCorrente(123 , 852);
        lista.add(cc);

        Conta cc2 = new ContaCorrente(123 , 821);
        lista.add(cc2);

        Conta cc3 = new ContaCorrente(123 , 123);
        boolean existe = lista.contains(cc3);

        System.out.println("Ja existe: "+ existe);

        for(Conta conta : lista) {
            System.out.println(conta);
        }
    }
}

Na resposta final a saida e sempre false ao inves de true e não consigo saber o por que? poderiam me ajudar por favor

2 respostas

Com mais calma fiz uma analise da aula e percebi que o erro estava quando fiz a declaração das contas em cc, cc2, e cc3 em que o numero da contas e das agencias estavam divergentes porem ainda não tenho certeza podem me confirmar isso depois por favor

Olá Matheus, tudo bem com você?

Realmente o resultado era para ser false por que em todas existe uma informação diferente ( seja conta ou numero da agência)

Então ao comparar em algum dos if's:

     if(this.agencia != outra.agencia) {
            return false;
        }

        if(this.numero != outra.numero) {
            return false;
        }

Tanto com CC1, quanto com CC2 irá dar true para o numero da agência, entretanto na hora de comparar o numero da conta teremos false, neste caso apenas quando as duas informações convergem que iremos passar pelas duas comparações e retornar true :)

Então seu raciocínio está certo!

Abraços e Bons Estudos!