当前位置: 首页 > 面试题库 >

Java银行程序帐户ID不涨?

朱雅惠
2023-03-14
问题内容

每次开设银行帐户,帐户ID都应加1,但是每次我尝试拉出ID时,我只会得到帐户ID为0,这是任何建议,因为我完全按照从书中学习的方式进行学习而且仍然没有更新。

帐户构造函数:

public class BankAccount {

    public static int bankID = 0;

    //constructor called by BankAccount michaelsBank = new BankAccount();
    public BankAccount(){
        balance = 0;
        lastAssignedNumber++;

        accountNumber = lastAssignedNumber;
    }

    //Constructs a bank account with an initial deposit, will be used if given a number for a parameter
    public BankAccount(double initialBalance){
        balance = initialBalance;
    }


        public void deposit(double amount){
            balance = balance + amount;
        }

        public void withdraw(double amount){
            balance = balance - amount;
        }

        public double getBalance(){
            return balance;
        }

        public int getID(){
            return accountNumber;
        }

        private double balance;
        private int accountNumber;
        private static int lastAssignedNumber;
}

银行账户主程序:

import java.text.*;

public class BankAccountTest {
 public static void main (String args[]){

            NumberFormat formatter = NumberFormat.getNumberInstance();
            formatter.setMaximumFractionDigits(2);  // Helps formatter format for final output
            formatter.setMinimumFractionDigits(2);
            ConsoleReader console = new ConsoleReader(System.in);

     System.out.println("Hello, would you like to make a new bank account?");
     String newA = console.readLine();

     if(newA.equalsIgnoreCase("yes")){
         System.out.println("How much would you like to deposit initially?");
         double init = console.readDouble();

         BankAccount account = new BankAccount(init);

         System.out.println("Your account is created, what would you like to do? \n 1: Get Balance \n 2: Get Account ID \n 3: Make a Withdrawl \n 4: Make a Deposit");
         int option = console.readInt();

         while(option == 1){
             System.out.println(account.getBalance() + " Is your balance. \nWhat would you like to do next?");
             System.out.println("1: Get Balance \n 2: Get Account ID \n 3: Make a Withdrawl \n 4: Make a Deposit");
             option = console.readInt();
         }
         while(option == 2){
             System.out.println(account.getID() + " Is your account id.\nWhat would you like to do next?");
             System.out.println("1: Get Balance \n 2: Get Account ID \n 3: Make a Withdrawl \n 4: Make a Deposit");
             option = console.readInt();
         }
         while(option == 3){
             System.out.println("How much would you like to withdraw?");
             double withdraw = console.readDouble();

             account.withdraw(withdraw);
             System.out.println("Your new balance is " + account.getBalance() + "\nWhat would you like to do next?");
             System.out.println("1: Get Balance \n 2: Get Account ID \n 3: Make a Withdrawl \n 4: Make a Deposit");
             option = console.readInt();
         }
         while(option == 4){
             System.out.println("How much would you like to deposit?");
             double deposit = console.readDouble();

             account.deposit(deposit);

             System.out.println("Your new balance is " + account.getBalance() + "\n what would you like to do next?");
             System.out.println("1: Get Balance \n 2: Get Account ID \n 3: Make a Withdrawl \n 4: Make a Deposit");
             option = console.readInt();
         }
     }

 }
}

问题答案:

您可以采用一种杂乱的方式构造BankAccount对象,其中是否分配ID取决于您使用的构造函数。如果您重写构造函数以便将它们链接在一起,而主要构造函数负责所有核心职责,而次要构造函数将默认值和委托分配给主要构造函数,那么初始化将具有一致的结果。

(术语是Scala的,在该语言中强制使用构造函数链接。)

这里的主要构造函数是:

public BankAccount(double initialBalance){
    balance = initialBalance;
    lastAssignedNumber++;
    accountNumber = lastAssignedNumber;
}

添加一个辅助构造函数:

public BankAccount() {
    this(0);
}

无论您呼叫哪个,都将生成一个ID。

(这与Lorenzo的答案类似,我为清楚地描述问题而提出投票。不同之处在于,他的链接朝着另一个方向发展,因此默认值被分配然后被覆盖。)



 类似资料:
  • 我想在取款后把账户上的余额换一下,但它只是停留在10点。我不知道如何在SavingsAccount中正确应用一个会改变它的方法。我试了但没有成功。

  • 你好,我正在Java办理银行申请。 我的问题是我不知道如何删除创建的帐户。 当我创建一个新的帐户,它得到一个新的号码,但我不知道如何删除一个帐户,如果有像3个帐户,我想删除帐号2,当我想创建一个新的帐户,它将得到ID号码2。(有1号和3号)。 当我想创建另一个帐户时,我想将其ID更改为4。 提前道谢。:)

  • 这个问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这个问题的解决方式不太可能对未来的读者有所帮助。 我已经一遍又一遍地写这个程序了,有人能告诉我我遗漏了什么吗,看起来这是个小错误,我没有抓住。 以下是我正在努力实现的目标: 设计一个名为Account的类,该类包含: 帐户名为id的私有int数据字段(默认值为0) 帐户名为balance的专用双精度数据字段(默认值为0) 名

  • 所以我有一个Java编程II类的作业,要求我创建一个名为Account的类,它要执行以下操作: 设计一个名为Account的类,该类包含: 数据成员: 帐户的一个名为id的类型为int的私有数据文件; 帐户的double named balance类型的专用数据字段; double类型、名为annualInterestRate的私有数据字段,存储当前利率(假设所有帐户的利率相同); 名为dateC

  • 我正在使用未来贝宝支付方式进行支付 我想使用paypal访问令牌从paypal帐户向银行或信用卡转账。 但是我找不到合适的方法来做这件事。 那有什么方法吗???

  • 我正在尝试为以下网站的客户id查找xpath- https://netbanking.hdfcbank.com/netbanking/?_ga=1.219943581.521154242.1455311784 但似乎没有一个奏效。我正在使用selenium webDriver将例如'123456'的密钥发送到客户id框,然后单击continue按钮。但硒并不是每次都能找到元素。谁能帮帮我吗!