我正在尝试编写一个简单的银行计划。
基本功能是:
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)
答案 0 :(得分:4)
你的bankArray在[0]只包含1个元素,所以你在第二次点击时获得NullPointer,此时:bankArray[i].balance
答案 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) {