2013-07-17 95 views
-1

我想寫一個簡單的銀行業務程序。java.lang.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) 
+0

BankAccount並不遵循oop!無論如何openBankAccount是一家銀行! –

+0

拉胡爾,你需要什麼銀行數組?這是一種平衡歷史嗎?因爲我不清楚你爲什麼在銀行賬戶對象中有一組銀行賬戶。 – Jops

回答

0

你只初始化數組(bankarray[i] = ba)的第一個元素,並在打印時您要訪問的所有10個元素。由於索引1至9上的數組是null,因此訪問bankarray[1]時失敗。

初始化所有元素,然後它將工作。

0

NullPointerException是試圖在尚未初始化的bankArray訪問索引 - 而不是BankAccount的,它包含null。將null作爲BankAccount(通過參考bankArray[i].bankAccNo)引發該異常。

要解決這個問題,您需要跟蹤哪些索引已經初始化,或者更好,請使用ArrayList

+0

更好的辦法是使用[HashMap](http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html),因爲他試圖使用密鑰(帳號)尋找一個帳戶。 – ajb

0

更改此:

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

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

你bankArray只包含1種元素[0],所以你得到空指針上的第二次打擊,在這一點上:bankArray[i].balance

enter image description here

+1

+1你在哪裏得到這些照片?始終如一! – NINCOMPOOP

+1

感謝您的+1。不是圖片,我使用Gimp創建它們。 :) – Jops

+1

@TheNewIdiot哇,你的名聲如此之高!做得好! 。 – Jops