0

銀行口座プログラムを作成しようとしていますが、すべての変数をすべてのクラスに表示する方法や、コードの引き出しメソッドとデポジットメソッドを表示する方法がわかりません。誰かが私のコードを見て、何が悪いのか教えてもらえますか?クライアントクラスでの入力と出力のみが必要です。

ありがとう

クライアントクラス

public class Client {
  public static void main(String args[]) {
    Scanner input = new Scanner(System.in);       
    System.out.println("Enter your Name: ");
    String cusName = input.nextLine();
    System.out.println("Enter Account Type: ");
    String type = input.next();
    System.out.println("Enter Initial Balance: ");
    int bal = input.nextInt();
    BankAccount b1 = new BankAccount(cusName, num, type, bal);
    int menu;
    System.out.println("Menu");
    System.out.println("1. Deposit Amount");
    System.out.println("2. Withdraw Amount");
    System.out.println("3. Display Information");
    System.out.println("4. Exit");
    boolean quit = false;
    do {
      System.out.print("Please enter your choice: ");
      menu = input.nextInt();
      switch (menu) {
      case 1:
        b1.deposit();
        break;

      case 2:
        b1.withdraw();
        System.out.println("Current Account Balance=" + Balance);
        System.out.print("Enter withdrawal amount:");
        amount = input.nextInt();
        break;

      case 3:
        b1.display();
        break;

      case 4:
        quit = true;
        break;
      }
    } while (!quit);
  }
}

マネークラス

public class Money
{

  static int accountNumber, Balance, amount;
  Scanner input = new Scanner(System.in);
  static String name, actype;
  public int deposit() {
    System.out.print("Enter depost amount:");
    amount = input.nextInt();
    if (amount < 0) {
      System.out.println("Invalid");
      return 1;
    }
    Balance = Balance + amount;
    return 0;
  }

  int withdraw()  {

    if (Balance < amount) {
      System.out.println("Not enough funds.");
      return 1;
    }
    if (amount < 0) {
      System.out.println("Invalid");
      return 1;
    }
    Balance = Balance - amount;
    return 0;
  }

}

BankAccountクラス

class BankAccount {
  Scanner input = new Scanner(System.in);
  static String name, actype;
  static int bal, amt;
  Random randomGenerator = new Random();
  int accNo = randomGenerator.nextInt(100);

  BankAccount(String name, int accNo, String actype, int bal) {
    this.name = name;
    this.accNo = accNo;
    this.actype = actype;
    this.bal = bal;
  }
  void display() {
    System.out.println("Name:" + name);
    System.out.println("Account No:" + accNo);
    System.out.println("Balance:" + bal);

  }

  void dbal() {
    System.out.println("Balance:" + bal);
  }
}
4

3 に答える 3

2
  1. に追加Moneyし、BankAccount次のようにgetterメソッドを作成します。

    class BankAccount {
       Scanner input = new Scanner(System.in);
       static String name, actype;
       static int bal, amt;
       Random randomGenerator = new Random();
       int accNo = randomGenerator.nextInt(100);
       Money money;
    
       BankAccount(String name, int accNo, String actype, int bal) {
        this.name = name;
        this.accNo = accNo;
        this.actype = actype;
        this.bal = bal;
        this.money = new Money();
      }
    
      public Money getMoney(){
         return this.money;
      }
      .....
    }
    
  2. bankaccount.getMoney()呼び出しdepositに使用し、次のように使用しwithdrawます。

     b1.getMoney().deposit();
     b1.getMoney().withdraw();
    

さらに、クラス属性(amount、accntType ...など)を非静的にし、コンストラクターを介して設定することをお勧めします。Money静的変数はクラス定義に関連付けられているため、銀行口座ごとに静的変数を維持することはできません。

于 2012-11-29T16:55:57.563 に答える
1

私はあなたのためにこの質問に答えるつもりはありません。代わりに、デフォルトでそれを説明するJavaプログラミングの概念についてもう少し読むことをお勧めします。

これらのリンクのいずれも読みたくない場合は、@YogendraSinghがこの質問に非常によく答えました。その答えを使用してください。

于 2012-11-29T17:00:45.933 に答える
0

オブジェクトの属性は静的であってはなりません。たとえば、「name、actype、bal、amt」などです。また、あなたのお金のクラスが存在するべきであり、それらの方法は銀行口座にある可能性があると思います(あなたは銀行口座に預金/引き出します)。

于 2012-11-29T16:51:53.410 に答える