-2

これは宿題の問題であり、テスターを実行すると null ポインター例外が発生します。エラーは私の行にあるようです

balance[i]=InitialBalance; 

 

public class Bank
{

    private BankAccount[] accounts;
    private double [] balance;
    int NumbersOfBankAccount;
    double InitialBalance;
    public Bank (int x, double y )
    {
        NumbersOfBankAccount = x;
        InitialBalance = y;

    }


    /**
     *     This method will get balance of specified bank account.
     */
    public double getBalance(int index)
    {
        for(int i = 0; i <NumbersOfBankAccount; i++)
        {
            balance[i]=InitialBalance; 
        }
        System.out.println(balance);
        return balance[index]; 
    }
}
4

5 に答える 5

7

balance初期化されaccountsません。

コンストラクターに次のようなものがありません。

balance = new double[NumbersOfBankAccount];
accounts = new BankAccount[NumbersOfBankAccount];
于 2012-11-05T22:07:32.367 に答える
5

balance初期化されていません。

private double [] balance;

ここに修正があります:

public Bank (int x, double y )
{
    NumbersOfBankAccount = x;
    balance = new double[NumbersOfBankAccount];
    accounts = new BankAccount[NumbersOfBankAccount];
    InitialBalance = y;

}

また、NumbersOfBankAccount名前が長くて入力するのが面倒です。numAccountsそれをまたはそのようなものに変更する必要があります。

もう 1 つ: 慣例により、変数名は通常、小文字で始まります。(InitialBalanceあるはずですinitialBalance)

于 2012-11-05T22:07:38.300 に答える
1

最初に配列の「バランス」を初期化する必要があります。

balance = new double[ NumbersOfBankAccount ];
于 2012-11-05T22:08:19.933 に答える
1

残高を初期化する必要はありません。配列であり、そのインデックスにアクセスしようとしています。

次のように配列を初期化する必要があります。

private double [] balance = new double[sizeofyour array] ;
于 2012-11-05T22:07:48.243 に答える
0

NumbersOfBankAccount変数が少なくともバランス配列と同じ大きさであることを確認する必要があります。アレイを初期化することを覚えていますか?また、アカウント配列を使用しているようには見えません。

また、getBalanceメソッドのコメントもご覧ください。私はそれがあなたがしたいことをしているとは思わない。渡されたインデックスを使用して、accounts配列で指定されたアカウントの残高を取得したいようです。または、テスト用のforループを実行していますか(これは問題ありません)?

要約すると:

  1. アレイが初期化されていることを確認してください
  2. 正しい配列からデータを取得していることを確認してください
于 2012-11-05T22:13:19.833 に答える