如何打印出数组中的对象(Java)

时间:2014-12-05 09:17:58

标签: java arrays

我有几个类,第一个名为“Account”的是添加到数组中的对象,“Account”类有一个名为“printAccountDetails”的方法,它将打印出帐户的详细信息。我正在使用的第二个类称为“AccountCollection”,它是数组类,我一直在尝试创建一个方法,打印出已添加到数组中的所有帐户对象的详细信息。

到目前为止我最接近的是这种方法:

public void printAllAccounts()

{
    if (accounts.length > 0)
    {
        for (int index = 0 ; index < accounts.length ; index++)
        {
            accounts[currentIndex -1].printAccountDetails();
        }
    }

    else

    {
        System.out.println ("No entries");
    }

“accounts”是数组的名称,“currentIndex”是数组中的点。这适用于打印出细节,但它会多次打印出帐户详细信息,这可能是因为我告诉它不断增加一个然后再返回1.但我真的不能想到任何其他方法它,就像这个例子:

public void printAllAccounts()

{
    if (accounts.length > 0)
    {
        for (int index = 0 ; index < accounts.length ; index++)
        {
            accounts[currentIndex].printAccountDetails();
        }
    }

    else

    {
        System.out.println ("No entries");
    }

只是导致空指针异常,因为当前索引为空。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

正如已经指出的那样,你需要在循环中使用index,因为currentIndex的值永远不会改变,因此你会一遍又一遍地看到同样的东西。

假设异常发生在上面的代码而不是printAccountDetails()内(堆栈跟踪在这里会有帮助),你遇到的问题是你的数组中的一个元素是null而你&# 39;重新尝试在其上调用printAccountDetails()

如果没有看到其余的代码,我就必须猜测,但我假设currentIndex在您添加项目时会增加。

所以说你添加一个项目,然后你有currentIndex==1,你的第一个循环将打印出第一个项目accounts[currentIndex -1] =&gt;重复accounts[0] - 对阵列中的每个元素一次。您的第二个循环将立即抛出NullPointerException,因为accounts[1]null

如果您更改为使用index,则会在index到达currentIndex后(即我的示例中为1)抛出异常。

所以答案(如果我的假设是正确的)不是在循环条件中使用数组的长度,而是使用currentIndex

    for (int index = 0 ; index < currentIndex ; index++)
    {
        accounts[index].printAccountDetails();
    }