2015-05-09 7 views
-2

Я нахожусь в классе Java для начинающих. Я пытаюсь реализовать метод, который передает значение другой учетной записи. Я не могу понять, как это сделать. Пока еще, мой код выглядит следующим образом:Array bank system: проблема с передачей значения

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, поэтому он использует методы retirarDe и depositaEm. В конце концов, передача - это просто выход из одной учетной записи и внесение одной и той же суммы в другую учетную запись.

Таким образом, вам не понадобится класс transfere в вашем классе Conta. Однако вам придется переписать методы retire в классах Conta и retirarDe в Banco, чтобы они оба возвращали логическое значение - true, если баланс был достаточным, а вывод был успешным, false, если нет, для кода ниже, чтобы работать.

Метод transferir в классе Banco:

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

Перепишите ваш метод retirar в классе Conta так:

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

И переписать метод retirarDe в Banco так:

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