java - 银行账户Java程序

标签 java arrays loops menu

我正在为我的 java 类创建一个银行账户程序,该程序应该管理多达 5 个不同的银行账户。该程序必须允许创建一个新帐户,我已经完成,允许存款和取款,这也已完成,我无法工作的 2 个部分是 1:银行最多只能有 5 个帐户,所以如果a 6th is trying to be created,一条消息说已经创建了5个,2:其中一个选项必须打印出银行活期账户的所有账户余额。

这是我目前的代码:

import java.util.Scanner;
public class Bankapp {

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    Bank myBank = new Bank();

    int user_choice = 2;


    do {
        //display menu to user
        //ask user for his choice and validate it (make sure it is between 1 and 6)
        System.out.println();
        System.out.println("1) Open a new bank account");
        System.out.println("2) Deposit to a bank account");
        System.out.println("3) Withdraw to bank account");
        System.out.println("4) Print account balance");
        System.out.println("5) Quit");
        System.out.println();
        System.out.print("Enter choice [1-5]: ");
        user_choice = s.nextInt();
        switch (user_choice) {
            case 1: 
                System.out.println("Enter a customer name");
                    String cn = s.next();
                    System.out.println("Enter a opening balance");
                    double d = s.nextDouble();
                    System.out.println("Account was created and it has the following number: " + myBank.openNewAccount(cn, d));
                    break;
            case 2: System.out.println("Enter a account number");
                    int an = s.nextInt();
                    System.out.println("Enter a deposit amount");
                    double da = s.nextDouble();
                    myBank.depositTo(an, da);
                    break;
            case 3: System.out.println("Enter a account number");
                    int acn = s.nextInt();
                    System.out.println("Enter a withdraw amount");
                    double wa = s.nextDouble();
                    myBank.withdrawFrom(acn, wa);
                    break;
            case 4: System.out.println("Enter a account number");
                    int anum = s.nextInt();
                    myBank.printAccountInfo(anum);
                    break;
            case 5:
                    System.out.println("Here are the balances " + "for each account:");
            case 6:
                System.exit(0);
        }
}
while (user_choice != '6');
}

static class Bank {
private BankAccount[] accounts;     // all the bank accounts at this bank
private int numOfAccounts = 5;      // the number of bank accounts at this bank

// Constructor: A new Bank object initially doesn’t contain any accounts.
public Bank() {
    accounts = new BankAccount[5];
    numOfAccounts = 0;
    }

// Creates a new bank account using the customer name and the opening balance given as parameters
// and returns the account number of this new account. It also adds this account into the account list
// of the Bank calling object.
public int openNewAccount(String customerName, double openingBalance) {

    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
}

// Withdraws the given amount from the account whose account number is given. If the account is
// not available at the bank, it should print a message.
public void withdrawFrom(int accountNum, double amount) {
    for (int i =0; i<numOfAccounts; i++) {
        if (accountNum == accounts[i].getAccountNum()  ) {
            accounts[i].withdraw(amount);
            System.out.println("Amount withdrawn successfully");
            return;
        }
    }
    System.out.println("Account number not found.");
    }

// Deposits the given amount to the account whose account number is given. If the account is not
// available at the bank, it should print a message.
public void depositTo(int accountNum, double amount) {
    for (int i =0; i<numOfAccounts; i++) {
        if (accountNum == accounts[i].getAccountNum()  ) {
            accounts[i].deposit(amount);
            System.out.println("Amount deposited successfully");
            return;
        }
    }
    System.out.println("Account number not found.");
}

// Prints the account number, the customer name and the balance of the bank account whose
// account number is given. If the account is not available at the bank, it should print a message.
public void printAccountInfo(int accountNum) {
    for (int i =0; i<numOfAccounts; i++) {
                if (accountNum == accounts[i].getAccountNum()  ) {
                    System.out.println(accounts[i].getAccountInfo());
                    return;
                }
            }
    System.out.println("Account number not found.");
}


public void printAccountInfo(int accountNum, int n) {
    for (int i =0; i<numOfAccounts; i++) {
                        if (accountNum == accounts[i].getAccountNum()  ) {
                            System.out.println(accounts[i].getAccountInfo());
                            return;
                        }
                    }
    System.out.println("Account number not found.");
    }

}





  static class BankAccount{

       private int accountNum;
       private String customerName;
       private double balance;
       private  static int noOfAccounts=0;

       public String getAccountInfo(){
           return "Account number: " + accountNum + "\nCustomer Name: " + customerName + "\nBalance:" + balance +"\n";
       }


       public BankAccount(String abc, double xyz){
         customerName = abc;
         balance = xyz;
         noOfAccounts ++;
         accountNum = noOfAccounts;
       }

    public int getAccountNum(){
        return accountNum;
    }
    public void deposit(double amount){

        if (amount<=0) {
            System.out.println("Amount to be deposited should be positive");
        } else {
            balance = balance + amount;

        }
    }
    public void withdraw(double amount)
    {
        if (amount<=0){
             System.out.println("Amount to be withdrawn should be positive");
         }
        else
        {
            if (balance < amount) {
                System.out.println("Insufficient balance");
            } else {
                balance = balance - amount;

            }
        }
    }

}//end of class

程序运行正常,我只需要添加这两个选项,就不能使它们正常工作,我该怎么做呢?此外,如果尚未创建帐户,选项 3 和 4 将不起作用。提前致谢。

更新:这是我尝试过的方法,我不断收到此方法必须返回类型为 int 的错误。

public int openNewAccount(String customerName, double openingBalance) {
    if(numOfAccounts > 5)
    {
        System.out.println("5 accounts already exist");
    }
    else
    {
    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
    }
}

更新 2:我添加了一个返回声明,现在当它运行时,它会开立第 5 个账户,但对于第 5 个账户之后的每个账户,它只是说账户号码再次为 5,而不是不开账户。

public int openNewAccount(String customerName, double openingBalance) {
    if(numOfAccounts > 5)
    {
        System.out.println("5 accounts already exist");
    }
    else
    {
    BankAccount b = new BankAccount(customerName, openingBalance);
    accounts[numOfAccounts] = b;
    numOfAccounts++;
    return b.getAccountNum();
    }
    return numOfAccounts;
}

最佳答案

很简单。创建一个大小为 5 的列表,并在创建用户时将帐户添加到该列表中。在添加之前检查列表大小是否 <= 5。如果是,则继续添加帐户,否则抛出错误

对于选项 2,只需遍历列表并显示结果

关于java - 银行账户Java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066881/

相关文章:

java - 如何在 Java 可执行文件 .jar 中启动多个主程序?

java - appengine-api-1.0-sdk-1.9.57.jar 和 cache-api-1.0.0.jar 之间的冲突

c - 如何使用 C 中的 while 循环使程序无限重新启动

linux - 为什么遍历一组 linux 文件即使没有匹配项也总是返回 1?

php - 遍历字符串,删除逗号,添加到 PHP 中的数组

java - 这个程序是否以无限循环结束?我怎么知道?

java - 使用 Apache Camel 如何解码通过 CXF 端点传入的反序列化对象?

java - Python 相当于 Java 的 getClass().getFields()

检查数组的出现次数并输出到新数组。 C

C程序在字符串中查找子字符串