отображение элементов массива - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь получить доступ к методу toString из другого класса для печати элементов массива.

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

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 30 марта 2011

Когда вы переопределяете метод 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 голосов
/ 30 марта 2011

То, как вы это сделали, неэффективно, но оно будет работать.

В чем проблема, с которой вы сталкиваетесь?

Если вы получаете исключение NullPointerException, сбросьте вызов на .toString(), поскольку он все равно сделает это для вас (кроме вас с NPE)

...