2
respostas

Diferença nos valores da transferencia

Após o último vídeo da classe abstrada, fui rodar o programa, e sumiu 10 reais da CC, em vez de ficar 89.8, ficou 79.8 do valor e não achei o erro.

public class TesteContas {

public static void main(String[] args) {

    ContaCorrente cc = new ContaCorrente(111, 111);
    cc.deposita(100);

    ContaPoupanca cp = new ContaPoupanca(222, 222);
    cp.deposita(200.0);

    cc.transfere(10.0, cp);


    System.out.println("CC: " + cc.getSaldo());
    System.out.println("CP: " + cp.getSaldo());

}

}


ublic class ContaCorrente extends Conta {

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


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


@Override
public void deposita(double valor) {
    super.saldo += valor;

}

}

2 respostas

Olá, Leonardo, pelo que você mostrou esse erro não deveria acontecer. O resultado para cc.getSaldo() deveria ser 89.8, talvez o exista algum erro na classe Conta que é herdada por ContaCorrente e que detém o método saca(), talvez ele esteja manipulando de alguma forma o valor, não?

Opa João. Segue o código da classe Conta

protected double saldo; private int agencia; private int numero; private Cliente titular; private static int total = 0;

public Conta(int agencia, int numero) {
    Conta.total++;
    //System.out.println("O total de contas é " + Conta.total);
    this.agencia = agencia;
    this.numero = numero;
    //this.saldo = 100;
    //System.out.println("Estou criando uma conta " + this.numero);
}

public abstract void deposita(double 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.saca(valor)) {
        this.saldo -= valor;
        destino.deposita(valor);
        return true;
    }
    return false;
}

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

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

public void setNumero(int numero) {
    if (numero <= 0) {
        System.out.println("Nao pode valor menor igual a 0");
        return;
    }
    this.numero = numero;
}

public int getAgencia() {
    return this.agencia;
}

public void setAgencia(int agencia) {
    if (agencia <= 0) {
        System.out.println("Nao pode valor menor igual a 0");
        return;
    }
    this.agencia = agencia;
}

public void setTitular(Cliente titular) {
    this.titular = titular;
}

public Cliente getTitular() {
    return this.titular;
}

public static int getTotal() {
    return Conta.total;
}