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

O código não computa a taxa de 20 centavos.

O meu código está escrito da seguinte forma:

public class Conta {

    private double saldo;
    private int agencia;
    private int numero;

    private static int total;

    public Conta(int agencia, int numero) {
        total++;
        this.agencia = agencia;
        this.numero = numero;
    }

    public double getSaldo() {
        return saldo;
    }

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

    public boolean saca(double valor) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            return true;
        } else {
            return false;
        }
    }

    public boolean transfere(double valor, Conta destino) {
        if(this.saldo >= valor) {
            this.saldo -= valor;
            destino.deposita(valor);
            return true;
        }
        return false;
    }

    public static int getTotal() {
        return total;
    }
}
public class ContaCorrente extends Conta {

    public ContaCorrente (int agencia, int numero) {
        super(agencia, numero);
    }

    @Override
    public boolean saca(double valor) {
        double valorSaque = valor + 0.2;
        return super.saca(valorSaque);
    }

}
public class ContaPoupanca extends Conta {

    public ContaPoupanca (int agencia, int numero) {
        super(agencia, numero);
    }
}

No entanto, quando eu tento executar o main:

public class Sistema {

    public static void main(String[] args) {
         ContaPoupanca primeiraConta = new ContaPoupanca(45, 23455);

         ContaCorrente segundaConta = new ContaCorrente(45, 23456);

         primeiraConta.deposita(500.0); 

         segundaConta.deposita(350.0);

         segundaConta.transfere(100.0, primeiraConta);
         System.out.println(primeiraConta.getSaldo());
         System.out.println(segundaConta.getSaldo());
    }

}

O output é 600 e 250, ao invés de 600 e 249.8, como deveria ser.

O que eu estou fazendo de errado?

3 respostas
solução!

Na classe Sistema, vc instancia ContaCorrente (segundaConta), seta saldo para 350 (deposita). Mas em nenhum momento vc invocou o método SACA, então realmente não acontecerá o abatimento de 0,20 centavos.

Ou vc esqueceu de colocar a taxa de 0,20 centavos no métodos transfere, ou vc esqueceu de invocar o método saca.

Opa, tudo certo?

Analisando o seu método transfere:

public boolean transfere(double valor, Conta destino) { if(this.saldo >= valor) { this.saldo -= valor; destino.deposita(valor); return true; } return false; }

Acredito que não tenha nenhuma regra sobre a taxa de 0.20, por esse motivo não é descontado. Acho que é isso! :)