2014-12-05 51 views
-1

我有几个类,第一个叫做“Account”的是添加到数组中的对象,“Account”类有一个名为“printAccountDetails”的方法,它会打印出账户的详细信息。我使用的第二个类被称为“AccountCollection”,它是数组类,我一直在试图创建一个方法来打印出已添加到数组中的所有帐户对象的详细信息。如何打印出一个数组中的对象(Java)

最接近到目前为止,我得到是这样的方法:

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"); 
    } 

“账户”是数组的名字,而“CURRENTINDEX”是阵列中的点。这可以用于打印出详细信息,但是很多时候会打印出帐户详细信息,这可能是因为我已经告诉它不断递增1,然后回到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"); 
    } 

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

+3

使用'index'取代'currentIndex',因为这是你的循环内部的计数器变量。你在哪里定义了'currentIndex'? – 2014-12-05 09:19:36

+0

在构造函数中: public AccountCollection(int maxNoOfAccounts) { accounts = new Account [maxNoOfAccounts]; currentIndex = 0; } 添加索引仍然给出一个空指针异常:/打印出账户后! – Patterrz 2014-12-05 09:26:56

回答

0

正如已经指出的那样,您需要在循环内部使用index,因为currentIndex的值永远不会在那里发生变化,因此您一次又一次地看到相同的东西。

假设在上面的代码中发生异常,而不是printAccountDetails()(堆栈跟踪在这里会有所帮助),那么您遇到的问题是数组中的某个元素为null,并且您试图调用printAccountDetails()在上面。

没有看到你的代码的其余部分,我不得不猜测,但我假设currentIndex增加了一个项目。

所以说你添加一个项目,那么你有currentIndex==1和你的第一个循环将打印出第一项目accounts[currentIndex -1] =>accounts[0]多次 - 一次为数组中的每个元素。您的第二个循环将立即抛出NullPointerException,因为accounts[1]null

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

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

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