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

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

Não consigo rodar o meu TestaOrdenacao. Aparece a seguinte mensagem de erro:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The method sort(Comparator<? super ContaPoupanca>) in the type List<ContaPoupanca> is not applicable for the arguments (List<ContaPoupanca>)
at conta.programas.TestaOrdenacao.main(TestaOrdenacao.java:24)

Aqui está o código da minha classe TestaOrdenacao:

package conta.programas;

import java.util.ArrayList;
import java.util.List;

import conta.classes.ContaPoupanca;

public class TestaOrdenacao {

    public static void main(String[] args) {
        ContaPoupanca c1 = new ContaPoupanca();
        ContaPoupanca c2 = new ContaPoupanca();
        ContaPoupanca c3 = new ContaPoupanca();
        c1.atualiza(200);
        c2.atualiza(100);
        c3.atualiza(300);

        List<ContaPoupanca> contas = new ArrayList<ContaPoupanca>();
        contas.add(c1);
        contas.add(c2);
        contas.add(c3);
        System.out.println("Sem ordenar");
        System.out.println(contas.get(0)+ " "+contas.get(1)+ " "+contas.get(2));
        contas.sort(contas);
    }

}

Da Classe ContaPoupanca:

package conta.classes;

public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca>{

    @Override
    public void atualiza(double taxa) {
        this.saldo += taxa;
    }

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

}

E da classe Conta:

package conta.classes;

import conta.exception.ValorInvalidoException;

public abstract class Conta {

    public double saldo = 0;
    protected int numero;
    private String nome;

    public abstract void atualiza(double taxa);

    public void saca(double taxa) {
        if (saldo >= taxa) {
            saldo -= taxa;
        } else {
            System.out.println("Saldo insuficiênte");
        }
    }

    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }

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

    public void deposita(double valor) throws ValorInvalidoException {
        if (valor < 0) {
            throw new ValorInvalidoException(valor);
        } else {
            this.saldo = +valor;
        }
    }

    @Override
    public String toString() {
        return "O seu saldo é de: " + this.saldo;
    }

    @Override
    public boolean equals(Object obj) {
        Conta outra = (Conta) obj;
        if (this.saldo == outra.saldo && this.nome == outra.nome) {
            return true;
        } else {
            return false;
        }
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}
2 respostas
solução!

Oi Bruno, tudo bem?

Onde você faz:

contas.sort(contas);

Na verdade é para utilizar o método sort da classe java.util.Collections:

Collections.sort(contas);

Troca essa parte e acredito que irá funcionar.

O método sort em contas existe, foi incluído na versão 8 do Java, mas não é utilizado dessa forma. São cenas de um próximo capítulo. ;)

Faz sentido? Restou alguma dúvida?

Abraço.

Verdade. Eu viajei aqui. Era isso mesmo. Por enquanto não restou dúvida.

Muito obrigado.

Abração.