-1

我正在尝试编写一个简单的银行程序。

基本功能是:

1. open account - (open <amount>)-- returns account number
2.check balance - (balance <AccountNumber>)

下面的代码是这个。我没有发布我的其他类和包含 main() 的类,因为我相信问题出在这段代码中的某个地方::

public class BankAccount {
private static int bankAccNoGen=1001;
private int balance;
private int bankAccNo;
private  int i=0;

BankAccount[] bankArray=new BankAccount[10];

public void openBankAccount(int openAmount){
    BankAccount ba =new BankAccount();
    ba.balance=openAmount;
    ba.bankAccNo=bankAccNoGen;

    bankArray[i] = ba;
    System.out.println("Account opened with the account number : "+bankArray[i].bankAccNo);
    System.out.println("Please note the account number for later use.");
    System.out.println("Balance for account no : "+bankArray[i].bankAccNo+" is : "+ bankArray[i].balance);
    ++bankAccNoGen;++i;

}
public void printBalance(int accNo){


    for(int i=0;i<10;i++){
        if(bankArray[i].bankAccNo==accNo){
            System.out.println("Account Number :"+ accNo +" currently has :"+bankArray[i].balance);
        }
    }

}

}

运行后,我可以通过以下方式开设银行账户:

open 1000

输出:

Account opened with the account number : 1001
Please note the account number for later use.
Balance for account no : 1001 is : 1000

I can check balance by :

balance 1001

错误:

 Exception in thread "main" java.lang.NullPointerException  at
 BankAccount.printBalance(BankAccount.java:27)  at
 ReadInput.inputRead(ReadInput.java:36)     at
 SimpleBank.main(SimpleBank.java:11)
4

4 回答 4

4

您的 bankArray 在 [0] 处仅包含 1 个元素,因此您在第二次点击时获得 NullPointer,此时:bankArray[i].balance

在此处输入图像描述

于 2013-07-17T16:48:42.257 回答
0

NullPointerException是因为试图访问bankArray尚未初始化的索引 - 而不是 a BankAccount,它包含null. 视为nullBankAccount通过引用bankArray[i].bankAccNo)会引发该异常。

要解决此问题,您需要跟踪哪些索引已被初始化,或者更好的是,使用ArrayList

于 2013-07-17T16:43:02.293 回答
0

改变这个:

if(bankArray[i].bankAccNo==accNo){

if (bankArray[i] != null && bankArray[i].bankAccNo == accNo) {
于 2013-07-17T16:43:12.460 回答
0

您只需初始化数组 ( bankarray[i] = ba) 中的第一个元素,并且在打印时要访问所有 10 个元素。访问时失败,bankarray[1]因为索引 1 到 9 上的数组是null.

初始化所有元素,然后它将起作用。

于 2013-07-17T16:41:51.397 回答