1
resposta

Dúvida Transferência

Olá! Na classe CriarConta estou tentando fazer a transferência de uma conta primeiraConta para segundaConta, porém ao fazer o System.out.println(segundaConta.getSaldo()); o saldo não altera (no caso continua imprimindo o saldo anterior de R$ 1.200,00, sendo que fiz a tentativa de transferir R$ 500,00 da primeiraConta para segundaConta). Alguém poderia me ajudar? Obrigado.

package bytebank;

public class Conta {

    private double saldo;
    private int agencia;
    private int conta;
    private String titular;

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

    double saque(double valor) {
        this.saldo -= valor;
        return saldo;
    }

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

    public double getSaldo() {
        return saldo;
    }

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

    public int getAgencia() {
        return agencia;
    }

    public void setAgencia(int agencia) {
        this.agencia = agencia;
    }

    public int getConta() {
        return conta;
    }

    public void setConta(int conta) {
        this.conta = conta;
    }

    public String getTitular() {
        return titular;
    }

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

}

package bytebank;

public class CriarConta {

    public static void main(String[] args) {

        Conta primeiraConta = new Conta();
        Conta segundaConta = new Conta();

        primeiraConta.setSaldo(200);
        primeiraConta.setAgencia(10);

        segundaConta = primeiraConta;

        primeiraConta.deposita(1000);

        primeiraConta.setTitular("Rodrigo");

        System.out.println(primeiraConta.getTitular());

        System.out.println(primeiraConta.getSaldo());

        **primeiraConta.transferencia(500, segundaConta);**

        **System.out.println(segundaConta.getSaldo());**

        Conta terceiraConta = new Conta();

        terceiraConta.deposita(1000);

        System.out.println(terceiraConta.getSaldo());        
    }
}
1 resposta

Oi Rodrigo, tudo bem?

O saldo na segunda não está alterando, pois a segunda e a primeira conta são a mesma conta. Veja que após instanciar as duas contas, nesse trecho do código a segundaConta está recebendo a primeiraConta:

Conta primeiraConta = new Conta();
Conta segundaConta = new Conta();

primeiraConta.setSaldo(200);
primeiraConta.setAgencia(10);

segundaConta = primeiraConta;

Isso faz com que ambas as contas referenciem a mesma conta. Apagando essa linha de código deve resolver seus problemas, já que agora cada referência apontará para instancias diferentes.

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!