2012-02-25 81 views
-1

我正在編寫一個應用程序,我在類中使用了一個數組。這個數組在全局方法範圍之外聲明,以便所有的對象方法都能夠訪問數據。但是,當我將一個對象分配給索引時,該對象僅作爲該特定方法中數組的一部分提供。試圖讀取該數組索引的任何其他方法都會得到一個nullpointerexception。Java數組和範圍

一些代碼說明我的用法:

Account[] accounts = new Account[8000]; 


public void addAccount() { 


    cli.printMessage("Welcome to the account add wizard."); 
    String holdername = cli.getInput(entername); 
    int accountnr = Integer.parseInt(cli.getInput(enternr)); 
    BigDecimal accbalance = new BigDecimal(cli.getInput(enterinitialbalance)); 

    accounts[accountnr] = new Account(holdername, accountnr, accbalance); 
    String accountinfo=accounts[accountnr].number + " " + " " + accounts[accountnr].holder + " " + accounts[accountnr].balance; 
    cli.printMessage(accountinfo); 

} 

添加帳戶工作一路,這不從這個類的同一實例中運行時:

public void getAccountinfo() { 

    int accountnr = Integer.parseInt(cli.getInput(getinfo)); 
    String accountinfo=accounts[accountnr].number + "" + "" + accounts[accountnr].holder + accounts[accountnr].balance; 
    cli.printMessage(accountinfo); 
} 

這是由於範圍還是由於我混淆了實例和類變量?可能是完全不同的東西?

錯誤我得到的是一個空指針異常在

 String accountinfo=accounts[accountnr].number + "" + "" + accounts[accountnr].holder + accounts[accountnr].balance; 

感謝您的幫助!

+0

你預計會發生什麼,實際發生了什麼? – Jivings 2012-02-25 13:38:33

+4

它應該沒問題 - 請顯示一個簡短但完整的*程序來證明問題。 (您應該考慮使用camelCase作爲您的變量名稱,以便清晰起見。) – 2012-02-25 13:38:35

+0

accountnr在getAccountinfo()中具有什麼值 – 2012-02-25 13:39:58

回答

1

getAccountInfo你讓用戶輸入一號碼X. 如果在X陣列「細胞」不是經由addAccount預先設定,accounts[X]null因此accounts[X].number正確地彈出。

+0

你是對的,我發現了錯誤。該應用程序是一個cli應用程序。當用戶輸入一些輸入並完成他們的「任務」後,我再次調用菜單渲染方法。問題在於持有我粘貼的代碼的類(賬戶管理類)在該方法內部實例化。從而爲每個任務創建一個新的賬戶管理對象。將它移動到該類中的全局對象使其全部工作。 – nenne 2012-02-25 13:51:23