我试图从另一个类访问toString方法,以便打印数组的元素。
info += "Purchases:\n";
for(int index = 0; index < purchases.size(); index++){
info += "[" + (index + 1) + "] ";
info += purchases.get(index).toString();
info += "\n";
}
我希望代码能够访问Purchases类中的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;
}
我该怎么做?
答案 0 :(得分:0)
你这样做的方式效率低下但是会有效。
你看到的问题是什么?
如果您收到NullPointerException,请调用.toString()
,因为无论如何它都会为您执行此操作(除了NPE)
答案 1 :(得分:0)
当你覆盖对象的toString()方法时,你不需要调用它来工作:
myObject.toString();
对于打印数组我建议使用增强型for循环,它更容易。 例如:
List<MyObject> mo = new ArrayList<MyObject>();
for(MyObject s: listObject){
System.out.print(s);
}
如果MyObject类重写toString()方法,上面的示例将完美地工作 注意:想象一下mo充满了对象。
我认为你正确地覆盖了toString()方法问题就在你的循环中。试试增强的for循环:
for(Purchase p: purchases) {
System.out.println(p);
}
那应该做的工作