2015-05-09 25 views
-2

我在初学者的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'); 
    } 
} 
+0

什么是你的问题?有什么地方使用例子吗?您是否尝试过使用其他方法添加更新余额的方法? –

+2

我可以推荐在你的代码示例中使用英文单词吗?得到答案会更容易。 (反正英语也不是我最喜欢的语言,但我总是用英语编写java代码,因为所有的java关键字和框架都使用相同的语言。) – bvdb

+0

代码问题到底是什么? –

回答

0

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

这样你甚至不需要班上的transfereConta。但是,您需要重写,retirarDe,类中的方法retire,因此如果余额足够且取款成功,它们都会返回布尔型 - true,如果不成功,则为false,以使代码正常工作。

Banco类的方法transferir

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

重写你的方法retirarConta类是这样的:

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

并重写方法retirarDeBanco这样的:

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."); 
}