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

Dúvida no Ex. 2 da Aula 5 - Collections framework

Verifiquei que se eu usar o código dado como resposta ele não compila Alguém sabe o pq???

public class ContaPoupanca extends Conta implements Comparable {

@Override public int compareTo(ContaPoupanca outra) { return this.getNumero() - outra.getNumero(); } }

5 respostas

Oi Fábio, tudo bem?

Me fala qual o erro que dá?

Abs.

public class ContaPoupanca extends Conta implements Comparable{

public void deposita(double valor) { this.saldo += valor - 0.10;

}

@Override public void atualiza(double taxa) {

this.saldo += this.saldo taxa 3; }

@Override public int compareTo(Conta o) { // TODO Auto-generated method stub return this.getNome().compareTo(o.getNome()); }

}

solução!

Fábio, acredito que é algum problema por conta dos generics. E se você fizer algo do tipo:

 public class ContaPoupanca extends Conta 
                            implements Comparable<ContaPoupanca> {

        // ... todo o código anterior fica aqui

        public int compareTo(ContaPoupanca outra) {
          if (this.saldo < outra.saldo) {
            return -1;
          }

          if (this.saldo > outra.saldo) {
            return 1;
          }

          return 0;
        }
    }

Funciona?

Você está utilizando o eclipse? Se sim, você sabe onde consegue ver o erro de compilação? O erro mesmo seria melhor para te ajudar.

A classe Conta ou ContaPoupança tem o método getNome()? Perceba que no exercício ele diz: "Utilize o critério de ordenar pelo número da conta ou pelo seu saldo"

Eu não fiz esse curso. Então caso não dê certo, você pode compactar a pasta do seu projeto e enviar para: lfelixsampaio@gmail.com ?

Abs.

Bom dia a Todos ,

Fabio a resposta do Lucas está correta , acredito que o problema está no genérico .

o a descrição do método da CompareTo da inteface Comparable é o seguinte :

 public int compareTo(T o);

quando não é passado nenhum genérico para comparable , você é obrigado sobrescrever o método passando como parâmetro um object .

@Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        return 0;
    }

e não será possivel passar conta como parametro .

Ao colocar o Genérico , ContaPoupança para a interface Comparable , a ao sobrescrever o método CompareTo , irá passar com argumento a ContaPoupanca .

@Override
    public int compareTo(ContaPoupanca outra) {

    return this.nome.compareTo(outra.nome);
}

fazendo assim a comparação certa com o nome da conta .

não sei se consegui ser claro na explicação, espero ter te ajudado a entender .

Bons Estudos

public int compareTo(ContaCorrente outraConta) {
        if (outraConta.ccNum>this.ccNum) return 1;
        else if(outraConta.ccNum<this.ccNum)return -1;
        return 0;
    }