【问题标题】:displaying the elements of an arraylist显示数组列表的元素
【发布时间】:2011-03-30 17:17:27
【问题描述】:

我正在尝试从另一个类访问 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;
}

我该怎么做?

【问题讨论】:

  • 你遇到了什么错误?

标签: java class arraylist


【解决方案1】:

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

你遇到了什么问题?

如果您收到 NullPointerException,请放弃对 .toString() 的调用,因为无论如何它都会为您执行此操作(除非没有 NPE)

【讨论】:

  • 它只打印金额,我希望它像在购买类的 toString 方法中一样打印日期和供应商
  • 听起来您正在运行旧版本的 Purchase 类。尝试重新编译它。如果这不起作用,请在 toString() 的第一行放置一个断点,然后对其进行调试。
【解决方案2】:

当你重写一个对象的 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);
}

这应该做的工作

【讨论】:

  • 它不允许“Purchase p: purchase” 它给出类型不匹配错误不能从 Double 转换
  • 我需要更多信息。将代码发布在您的购买类上,以便我可以看到每个变量的类型。我看看我能做什么。
  • @trs: 你确定purchasesList&lt;Purchase&gt; 而不是List&lt;Double&gt; 或类似的吗?
  • 我不能说,如果我没有看到声明该变量的代码,我就无法知道它是什么。另外我想他所做的压倒一切是在采购课上完成的。我需要查看类声明和其余代码才能知道我们在处理什么。
  • 不应该是for(MyObject s : mo)吗?
猜你喜欢
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2012-06-02
  • 2014-05-17
  • 2015-03-07
相关资源
最近更新 更多