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

A montagem do if só testa o primeiro, por motivo do return e esta parando no primeiro.

@Override
    public boolean equals(Object conta) {

        Conta contas = (Conta)conta;

// Até aqui está parte ok
        if (this.agencia != contas.agencia) {
            System.out.println("Teste Agencia");
            return false; 
// por haver este return acima, ele faz o laço de teste e o sistema está parando aqui. Ele returna false com os testes apenas das agencia e não faz o if abaixo.
// foi montado conforme a aula.
        }
// Não entendi porque o if abaixo não está sendo testado.
        if (this.conta != contas.conta) {

            System.out.println("Teste Agencia");
            return false;
        }
        return true;
    }
2 respostas
solução!

Fala ai Thiago, de boa ?

Em tese faz sentido ele parar se a agencia for diferente não queremos gastar o poder de processamento para ele fazer o segundo if por exemplo, pois já sabemos que a conta não é a mesma, faz sentido ?

Thiago, métodos booleanos retornam true ou false. O programa fez o teste booleano no primeiro if

if (this.agencia != contas.agencia){ //Verifica se a condição é verdadeira
    System.out.println("Teste Agencia"); //Exibe o texto
    return false; //Retorna falso
}

Todo o método é finalizado no primeiro return que for executado. O único jeito do bloco if não ser executado é se a condição de teste for false

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software