2015-05-09 56 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."); 
}