Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Collections framework

Estou com um problema na compilação do meu código: está dando a seguinte mensagem:

br.com.empresa.banco.conta.ContaPoupanca@2a139a55 br.com.empresa.banco.conta.ContaPoupanca@15db9742 br.com.empresa.banco.conta.ContaPoupanca@6d06d69c segue as classes para que vocês possam analisar e me ajudar, já quebrei a cabeça e ainda não consegui encontrar a solução.

Classe Conta:

package br.com.empresa.banco.conta;

public abstract class Conta { protected double saldo;

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

protected int numero;

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

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

public void saca(double valor) { this.saldo -= valor; }

public abstract void atualiza(double taxaSelic); } Classe ContaPoupanca:

package br.com.empresa.banco.conta;

public class ContaPoupanca extends Conta implements Comparable { private String nome;

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

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

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

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

public String getNome() { return nome; }

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

package br.com.empresa.banco;

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

import br.com.empresa.banco.conta.ContaPoupanca;

public class TestaOrdenacao { public static void main(String[] args) { List contas = new ArrayList();

ContaPoupanca cp1 = new ContaPoupanca(1500.0, "caio"); cp1.deposita(1500.0); contas.add(cp1);

ContaPoupanca cp2 = new ContaPoupanca(467, "Adriano"); cp2.deposita(2500.0); contas.add(cp2);

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

Collections.sort(contas);

for (ContaPoupanca conta : contas){ System.out.println(conta); } } } Espero que consigam me ajudar... Um abraço

1 resposta
solução!

ContaPoupanca cp1 = new ContaPoupanca(1500.0, "caio"); cp1.deposita(1500.0); contas.add(cp1);

ContaPoupanca cp2 = new ContaPoupanca(467, "Adriano"); cp2.deposita(2500.0); contas.add(cp2);

ContaPoupanca cp3 = new ContaPoupanca(230, "Victor"); cp3.deposita(1070.0); contas.add(cp3); Você não atribuiu nenhum número ao atributo numero de suas Contas:

Ou seja, todos por padrão estão recebendo o mesmo valor e devido a isso o método compareTo(), que serve para comparar as contas entre si para gerar uma ordenação, fica sem sentido. Para esse método funcionar você teria que atribuir um valor para as variáveis de instancia numero de seus objetos.

Também é possível consertar a saída em seu console através em substituir System.out.println(conta) por System.out.println(conta.getNome()).