Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Erro na saída do método deposita()

Olá Dheyfesson,

Na discussão anterior você postou a classe GerenciadorDeImpostoDeRenda, lá peguei o código do método adiciona:

void adiciona(Tributavel t){
        System.out.println("Adicionando tributável: " + t);

        this.total = total + t.calculaTributos();
    }

Analisando sua dúvida, pelo que entendi você está questionando o resultado da saída System.out.printf("O saldo é: %.2f",g.getTotal()) correto?

Se for, preciso do método calculaTributos, pois o cálculo do total também considera o valor deste método.

Envie também a classe conta.

3 respostas

Dheyfesson,

Não está errado, veja que você está depositando R%200,00 na conta, mas quando manda imprimir, você imprime o resultado da classe GerenciadorDeImpostoDeRenda, que retorna exatamente 10% do valor da conta. Ou seja, seu código está certo e funcionando corretamente como esperado.

solução

Tem razão Sandro, agora que vi que ContaCorrente implementa Tributável, ou seja, o método que eu queria, é este que você falou dos 10%. 200 * 0.01 = 2

O resultado na saída do método deposita() está errado. parece que está omitindo os zeros.

public class TestaGerenciadorDeImpostoDeRenda {

    public static void main(String[] args) {

        GerenciadorDeImpostoDeRenda g = new GerenciadorDeImpostoDeRenda();

        SeguroDeVida sv = new SeguroDeVida();

        ContaCorrente cc = new ContaCorrente();
        cc.deposita(200);
        g.adiciona(cc);

        System.out.printf("O saldo é: %.2f",g.getTotal());


    }

}

O saldo é: 2,00

repare que depositei 200 e o resultado da saída foi 2,00.

veja como está meu método deposita():

public class ContaCorrente extends Conta implements Tributavel {

    public void atualiza(double selic) {
        saldo = saldo * selic * 2;
    }


    public double calculaTributos() {
        // TODO Auto-generated method stub
        return this.getSaldo() * 0.01;
    }

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

o que há de errado?