【问题标题】:Array bank system: issue with transferring a value阵列银行系统:转移价值的问题
【发布时间】:2015-05-09 05:48:15
【问题描述】:

我正在上 Java 初学者课程。我正在尝试实现一种将值转移到另一个帐户的方法。我不知道该怎么做。到目前为止,我的代码如下:

Conta.java:

package br.com.banco;

class Conta {
    private int numeroConta;
    private String nome;
    private double saldo;
    private static int numeroDeContas = 0;

    // getters and setters
    public int getNumeroConta() {
        return numeroConta;
    }

    public void setNumeroConta(int numeroConta) {
        this.numeroConta = numeroConta;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public double getSaldo() {
        return saldo;
    }

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

    public String informacaoConta() {
        return "Número da conta: " + numeroConta + "\nNome do Cliente: "
                + nome + "\nSaldo:" + saldo + "\n";
    }

    public Conta(String abc, double xyz) {
        nome = abc;
        saldo = xyz;
        numeroDeContas++;
        numeroConta = numeroDeContas;
    }

    public void deposito(double valor) {
        if (valor <= 0) {
            System.out.println("O valor precisa ser positivo");
        } else {
            saldo = saldo + valor;
        }
    }

    public void retirar(double valor) {
        if (valor <= 0) {
            System.out.println("O valor precisa ser positivo");
        } else {
            if (saldo < valor) {
                System.out.println("Valor insuficiente");
            } else {
                saldo = saldo - valor;
            }
        }
    }

    public void transfere() {
        // I need help with this
    }
}

Banco.java:

package br.com.banco;

class Banco {
    private Conta[] contas;
    private int numContas;

    public Banco() {
        contas = new Conta[100];
        numContas = 0;
    }

    public int abrirConta(String nome, double saldoInicial) {
        Conta c = new Conta(nome, saldoInicial);
        contas[numContas] = c;
        numContas++;
        return c.getNumeroConta();
    }

    public void retirarDe(int numeroConta, double valor) {
        for (int i = 0; i < numContas; i++) {
            if (numeroConta == contas[i].getNumeroConta()) {
                contas[i].retirar(valor);
                System.out.println("Valor retirado com sucesso");
                return;
            }
        }
        System.out.println("Número de conta inválido.");
    }

    public void depositaEm(int numeroConta, double valor) {
        for (int i = 0; i < numContas; i++) {
            if (numeroConta == contas[i].getNumeroConta()) {
                contas[i].deposito(valor);
                System.out.println("Valor retirado com sucesso");
                return;
            }
        }
        System.out.println("Número de conta inválido.");
    }

    public void Transferir() {
        System.out.println("Número de conta inválido.");
    }

    public void mostrarInformacaoConta(int numeroConta) {
        for (int i = 0; i < numContas; i++) {
            if (numeroConta == contas[i].getNumeroConta()) {
                System.out.println(contas[i].informacaoConta());
                return;
            }
        }
        System.out.println("Número de conta inválido.");
    }
}

Sistema.java:

package br.com.banco;

import java.util.Scanner;

public class Sistema {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        Banco meuBanco = new Banco();
        int opcao;
        do {
            // display menu to user
            // ask user for their choice and validate it (make sure it is between 1 and 6)
            System.out.println();
            System.out.println("1) Abrir uma nova conta");
            System.out.println("2) Depositar");
            System.out.println("3) Sacar");
            System.out.println("4) Transferir");
            System.out.println("5) Saldo");
            System.out.println("6) Sair");
            System.out.println();
            System.out.print("Escolha uma opção [1-6]: ");
            opcao = s.nextInt();
            switch (opcao) {
                case 1:
                    System.out.println("Digite seu nome");
                    String cn = s.next();
                    System.out.println("Digite o saldo inicial da conta");
                    double d = s.nextDouble();
                    System.out.println("Conta criada com sucesso, o número da conta é: " + meuBanco.abrirConta(cn, d));
                    break;
                case 2:
                    System.out.println("Digite o número da conta");
                    int an = s.nextInt();
                    System.out.println("Digite um valor para depositar");
                    double da = s.nextDouble();
                    meuBanco.depositaEm(an, da);
                    break;
                case 3:
                    System.out.println("Digite o número da conta");
                    int acn = s.nextInt();
                    System.out.println("Digite um valor para sacar");
                    double wa = s.nextDouble();
                    meuBanco.retirarDe(acn, wa);
                    break;
                case 4:
                case 5:
                    System.out.println("Digite o número da conta");
                    int anum = s.nextInt();
                    meuBanco.mostrarInformacaoConta(anum);
                    break;
                // case 5: ... break;
            }
        }
        while (opcao != '6');
    }
}

【问题讨论】:

  • 您的问题到底是什么?某处有使用示例吗?您是否尝试过添加其他方法来使用其他金额更新余额?
  • 我建议在您的代码示例中使用英文单词。会更容易得到答案。 (无论如何英语也不是我的首选语言,但我总是用英语编写 java 代码,因为所有 java 关键字和框架都使用相同的语言。)
  • 你的代码到底有什么问题?
  • 我不知道如何将金额从一个帐户转移到另一个帐户,就像一个想法如何使用数组实现此方法

标签: java arrays system bank


【解决方案1】:

我会在Banco 类中编写您的方法transferir,以便它使用retirarDedepositaEm 方法。毕竟,转账实际上只是从一个账户取款,然后将相同金额的存款存入不同的账户。

这样,您甚至不需要在您的班级 transfere 中加入班级 Conta。但是,您必须重写类 Conta 中的 retire 方法和 Banco 中的 retirarDe 方法,因此如果余额充足且提款成功,它们都会返回布尔值 - truefalse如果没有,下面的代码才能工作。

Banco中的方法transferir

public void transferir(int numeroContaDe, int numeroContaA, double valor)
{
    bool suficiente = RetirarDe(numeroContaDe, valor);
    if (suficiente) {
        DepositaEm(numeroContaA, valor);
    }
}

像这样在Conta 类中重写你的方法retirar

public bool retirar(double valor)
{
    if (valor <= 0) {
        System.out.println("O valor precisa ser positivo");
    }
    else {
        if (saldo < valor) {
            System.out.println("Valor insuficiente");
        }
        else {
            saldo -= valor;
            return true;
        }
        return false;
    }
}

并像这样重写Banco中的方法retirarDe

public bool retirarDe(int numeroConta, double valor) {
    for (int i =0; i<numContas; i++) {
        if (numeroConta == contas[i].getNumeroConta()) {
            bool suficiente = contas[i].retirar(valor);
            if (suficiente) {
                System.out.println("Valor retirado com sucesso");
            }
            else
            {
                System.out.println("Salido insuficiente");
            }
        return suficiente;
        }
    }
    System.out.println("Número de conta inválido.");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2022-06-16
    • 2011-10-11
    • 2014-10-10
    • 2017-11-19
    • 1970-01-01
    • 2011-04-04
    相关资源
    最近更新 更多