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

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

Boa noite, já tentei rodar o próprio código que fornecem mas não ordena, alguém poderia por favor me ajudar passando o código das outras classe para eu ver o que errei. O código copila mas não ordena. Segue abaixo o código que usei.

//Código fornecido pela alura
 public class TestaOrdenacao {

            public static void main(String[] args) {
                List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();

                ContaPoupanca c1 = new ContaPoupanca(400, "Caio");
                c1.deposita(1500.0);
                contas.add(c1);

                ContaPoupanca c2 = new ContaPoupanca(467, "Adriano");
                c2.deposita(2050.99);
                contas.add(c2);

                ContaPoupanca c3 = new ContaPoupanca(230, "Victor");
                c3.deposita(1070.0);
                contas.add(c3);

                Collections.sort(contas);

                for (ContaPoupanca conta : contas) {
                    System.out.println(conta);
                }
            }
        }



//Minha classe conta atual
public class Conta {
    protected int numero;
    private double saldo;
    private String nome;

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

    public void saca(double valor){
        if(valor < saldo){
        this.saldo -= valor;
        } else{
            System.out.println("Não foi possível sacar.");
        }
    }

    public double getsaldo() {
        return this.saldo;
    }


    public String toString() {
        return this.nome + " Tem uma conta com valor: " + this.saldo; 
    }

    public Conta(){

    }

    public Conta(double saldo, String nome) {
        this.saldo = saldo;
        this.nome = nome;
    }

    public int getNumero() {
        return this.numero;
    }

    public double getSaldo() {
        return this.saldo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }



}



//Minha classe ContaPoupanca atual
public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {

    public ContaPoupanca() {

    }

    public ContaPoupanca(double saldo, String nome) {
        super(saldo, nome);
    }

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




}
2 respostas

Obs: Dúvida sobre anterior (execício 3) não conseguir abrir no tópico do exercício 3 pois já tinha respondido o mesmo.

solução!

Conseguir resolver o problema era no método compareTo na classe ContaPoupanca, o mesmo não estava comparando pelo saldo e sim pelo numero ao mudar funcionou.

@Override public int compareTo(ContaPoupanca outra) { if (this.saldooutra.saldo) return 1; return 0; }