2011-03-30 70 views
0

我想从另一个类访问toString方法以便打印数组的元素。显示arraylist的元素

info += "Purchases:\n"; 
for(int index = 0; index < purchases.size(); index++){ 
    info += "[" + (index + 1) + "] "; 
    info += purchases.get(index).toString(); 
    info += "\n"; 
} 

我想代码访问的toString在购买该类输出

public String toString(){ 
    String info; 
    DecimalFormat formatter = new DecimalFormat("$#0.00"); 

    info= (date.get(Calendar.MONTH) +1) + "/" + date.get(Calendar.DAY_OF_MONTH) + "/" + date.get(Calendar.YEAR); 
    info += "\t" + vendor + "\t\t"; 
    info += (formatter.format(amount)); 

    return info; 
} 

我怎样才能做到这一点?

+1

是错误你停留在哪? – Aleadam 2011-03-30 17:28:36

回答

0

你这样做的方式效率低下,但它会工作。

你看到什么问题?

如果您得到NullPointerException异常掉话到.toString()因为它会为你做这个反正(除withou的NPE)

+0

它只打印金额,我希望它打印购买类的toString方法中的日期和供应商 – trs 2011-03-30 17:32:49

+0

听起来好像您的购买类的旧版本正在运行。尝试重新编译它。如果这不起作用,请在toString()的第一行放置一个断点,然后对其进行调试。 – 2011-03-30 17:47:38

0

当您覆盖对象的toString()方法,你不需要调用它为了像这样工作:

myObject.toString(); 

也用于打印数组我建议使用增强for循环,这很容易。 实施例:

List<MyObject> mo = new ArrayList<MyObject>(); 
for(MyObject s: listObject){ 
    System.out.print(s); 
} 

上面的例子将如果MyObject来类覆盖了toString()方法 注很好地工作:只是想象莫充满对象。

我想你正确地覆盖了toString()方法,问题就在你的循环中。给一个尝试增强的for循环:

for(Purchase p: purchases) { 
    System.out.println(p); 
} 

这应该做的工作

+0

它不会允许“购买p:购买”它给出类型不匹配错误不能转换从双 – trs 2011-03-30 17:45:12

+0

我需要更多的信息。在您的购买类上发布代码,以便我可以查看每个变量的类型。我会看看我能做什么。 – sfrj 2011-03-30 17:54:56

+0

@trs:你确定'购买'是'列表'而不是'列表'或类似的吗? – 2011-03-30 20:44:10