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

Valores impressos imprecisos/incorretamente

package br.com.alura.java2.modelos;

import br.com.alura.java2.exception.ValorInvalidoException;

public abstract class Conta {

   private static int classId = 0;
   private String nome = new String();
   protected double saldo;
   protected int numero;


   Conta (){
      this.numero = classId++;
   }
   public String getNome() {
      return this.nome;
   }

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

   public int getNumero() {
      return numero;
   }

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

// AQUI!!! ***********************************
   public String toString() {
      return "esse objeto é uma conta com saldo R$" + this.saldo;
   }
//***********************************************
   public double getSaldo() {
      return saldo;
   }

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

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

   public abstract void atualiza(double taxa);

   public boolean equals(Object obj) {
      Conta outraConta = (Conta) obj;

      return (this.numero == outraConta.numero && this.nome == outraConta.nome);
   }
}
package br.com.alura.java2.modelos;

public class ContaPoupanca extends Conta implements Comparable<ContaPoupanca> {


   public ContaPoupanca(){
      super();
   }
   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 o) {
      return this.numero - o.numero;
   }

}
package br.com.alura.java2.main;

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

import br.com.alura.java2.modelos.ContaPoupanca;

public class TestaOrdenacao {

   public static void main(String[] args) {
      ContaPoupanca c1 = new ContaPoupanca();
      c1.deposita(150);

      ContaPoupanca c2 = new ContaPoupanca();
      c2.deposita(300);

      ContaPoupanca c3 = new ContaPoupanca();
      c3.deposita(500);

      List<ContaPoupanca> contas = new ArrayList<>();
      contas.add(c1);
      contas.add(c3);
      contas.add(c2);

      Collections.sort(contas); 

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

}

Os valores do saldo quando impressos ficam imprecisos: Console: esse objeto é uma conta com saldo R$149.9 esse objeto é uma conta com saldo R$299.9 esse objeto é uma conta com saldo R$499.9

5 respostas

Eu sobrescrevi o metodo, conforme dito na resposta a uma outra pergunta semelhante, desse forum, mas continua imprimindo errado,

Oi Orlando, tudo bem ?

Cara, tá certo sim.

Não entendi qual é o problema.

Dá uma olhadinha no seu toString :

public String toString() {
      return "esse objeto é uma conta com saldo R$" + this.saldo;
   }

Agora olha o deposita da sua conta poupança :

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

Você está somando o valor menos 10 centavos.

Oi Matheus, tudo bem?

Antes de mais nada, obrigado pela sua atencao!

Entao, esse e' o meu metodo:


// AQUI!!! ***********************************
   public String toString() {
      return "esse objeto é uma conta com saldo R$" + this.saldo;
   }
//***********************************************

deveria estar imprimindo 150.0, 300.0 e 500.0 respectivamente para o meu codigo:

ContaPoupanca c1 = new ContaPoupanca();
      c1.deposita(150);

      ContaPoupanca c2 = new ContaPoupanca();
      c2.deposita(300);

      ContaPoupanca c3 = new ContaPoupanca();
      c3.deposita(500);

mas esta imprimindo com erro: esse objeto é uma conta com saldo R$149.9 esse objeto é uma conta com saldo R$299.9 esse objeto é uma conta com saldo R$499.9

abc

solução!

Orlando, tudo bem ?

Está certo sim, na sua conta poupança você está tirando sempre 10 centavos, por isso está correto.

De fato, Matheus, estava viajando na maionese mesmo. Esqueci de computar mentalmente esse decremento.

Obrigado