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

Resultado.

O meu resultado não corresponde ao mesmo valor do mostrado na resposta. Funciona, mas o resultado continua sendo 1000.

5 respostas

Oi Jessica, tudo bom?

Tente trabalhar com numeros decimais como, por exemplo, 1000.097

Acho que é algum erro em alguma dessas classes. Como:

public class Principal {

    public static void main(String[] args) {
    //    ContaCorrente conta = new ContaCorrente();

        GerenciadorDeImpostoDeRenda gerenciador = new GerenciadorDeImpostoDeRenda();

        SeguroDeVida sv = new SeguroDeVida();
        gerenciador.adiciona(sv);

        ContaCorrente cc = new ContaCorrente();
        cc.deposita(1000);
        gerenciador.adiciona(cc);

        System.out.println(gerenciador.getTotal());
        System.out.printf("o saldo é: %.2f",cc.getSaldo());
    }
}
public class ContaCorrente extends Conta implements Tributavel {

    @Override
    public void atualiza(double taxa) {

    }

    public double calculaTributos(){
        return this.getSaldo()*0.01;
    }
}
abstract class Conta {

    private double saldo;

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

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

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

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

    public void MetodoQualquer(double valor){
        deposita(valor);
    }

//Se tirarmos o atualiza da Conta, perdemos a garantia de que todo objeto 
//que é uma conta vai ter implementado esse método. Isto é, uma classe que 
    //trabalhe com uma Conta não compilará mais a chamada ao método atualiza    

    public abstract void atualiza (double taxa);
}

Oi Jessica, na sua classe Principal, tente fazer um deposito de um numero decimal, por exemplo:

// resto da classe principal
ContaCorrente cc = new ContaCorrente();
        cc.deposita(1000.9875);

Quando trabalhamos com numeros inteiros, não temos representação decimal para poder editar!

O resultado foi: o saldo é: 1000,99

No caso ele fez um arredondamento para demonstrar o %.2f? toda vez que limitamos as casas decimais faz um arredondamento ou só faz cortar?

Porque eu testei colocando duas casas decimais, e ele repetiu o mesmo valor, só teve efeito quando foi mais de 2 casas decimais.

solução!

A ideia é que quando o valor possui mais casas decimais do que foi especificado, haverá arrendondamento. Caso contrario não haverá mudança na representação pois não ha casas decimais suficiente para realizar alguma.