java.lang.NullPointerException:无法打印数组内容

时间:2013-07-17 16:36:02

标签: java nullpointerexception

我正在尝试编写一个简单的银行计划。

基本功能是:

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

以下代码是this.I我没有发布我的其他类和contatins 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 个答案:

答案 0 :(得分:4)

你的bankArray在[0]只包含1个元素,所以你在第二次点击时获得NullPointer,此时:bankArray[i].balance

enter image description here

答案 1 :(得分:0)

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

启动所有元素,然后它将起作用。

答案 2 :(得分:0)

您的NullPointerException是尝试访问尚未初始化的bankArray中的索引而不是BankAccount,而是null。将null视为BankAccount(通过引用bankArray[i].bankAccNo)会抛出该异常。

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

答案 3 :(得分:0)

改变这个:

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

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