-2

这是一个家庭作业问题,当我运行测试仪时它给了我空指针异常。错误似乎在我的行中

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或类似的东西。

还有一件事:按照惯例,变量名通常以小写字母开头。(InitialBalance应该是initialBalance

于 2012-11-05T22:07:38.300 回答
1

你力图初始化你的余额;数组并尝试访问其索引。

你必须像这样初始化你的数组:

private double [] balance = new double[sizeofyour array] ;
于 2012-11-05T22:07:48.243 回答
1

您必须先初始化数组“余额”:

balance = new double[ NumbersOfBankAccount ];
于 2012-11-05T22:08:19.933 回答
0

您需要确保 NumbersOfBankAccount 变量至少与 balance 数组一样大。你还记得初始化数组吗?看起来您也没有使用您的帐户数组。

另外,请查看 getBalance 方法的注释。我不认为它正在做你想让它做的事情。看起来您想使用传递的索引来获取由 accounts 数组指定的帐户的余额。还是您正在执行 for 循环进行测试(可以)?

回顾一下:

  1. 确保您的数组已初始化
  2. 确保您从正确的数组中获取数据
于 2012-11-05T22:13:19.833 回答