私はクラス内で配列を使うアプリケーションを書く。この配列は、すべてのオブジェクトメソッドがデータにアクセスできるように、メソッドスコープの外側でグローバルに宣言されます。しかし、オブジェクトをインデックスに割り当てるとき、オブジェクトはその特定のメソッドで配列の一部としてしか利用できません。配列のそのインデックスを読み取ろうとする他のメソッドは、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;
グレイトフルでnullポインタ例外です! getAccountInfo
で
あなたは何が起こると予想され、実際に何が起こっていますか? – Jivings
それは問題ありません - 問題を示す短い*完全な*プログラムを表示してください。 –
getAccountinfo()でaccountnrが持つ値 –