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

Método transfere errado

Olá, meu método transfere() adiciona 10.0 na outra conta mas não tira 10.0 da conta antiga. O que pode estar acontecendo? Obrigado Tiago

5 respostas

Olá tvsjazz, seu código não veio, tente enviar novamente por aqui para podermos te ajudar. Abs.

package br.com.bytebank.banco.modelo;

/**
 * Classe que representa uma conta no bytebank
 * 
 * @author Tiago
 * @version 0.1
 *
 */
public abstract class Conta {

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

    /**
     * Construtor para inicializar o objeto Conta a partir da agencia e numero
     * @param agencia
     * @param numero
     */
    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);

    /**
     * Valor precisa ser maior que o saldo
     * @param valor
     * @throws SaldoInsuficienteException
     */
    public void saca(double valor) throws SaldoInsuficienteException {
        if (this.saldo < valor) {
            throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor);
        }
    }

    public void transfere(double valor, Conta destino) throws SaldoInsuficienteException {
        this.saca(valor);
        destino.deposita(valor);
    }

    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;
    }

}

Ai está a classe Conta. Ele deposita da outra conta mais não saca

solução!

Olá tvsjazz, o if que você incluiu testa a situação de não haver saldo suficiente pra fazer o saque do valor, mas faltou incluir o else com o código que retira (subtrai) o dinheiro da conta. Testa a alteração que eu incluí abaixo e veja se passa a funcionar dessa forma.

    public void saca(double valor) throws SaldoInsuficienteException {
        if (this.saldo < valor) {
            throw new SaldoInsuficienteException("Saldo: " + this.saldo + ", Valor: " + valor);
        } else {
            this.saldo -= valor;
        }
    }

Abs.

Nossa cara... óbvio né ahahaha que burro que fui hehe Valeu cara!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software