2016-02-16 2 views
0

Я нахожусь в настоящее время в классе Java AP Computer Science и мы, необходимые для завершения работы, которая может сделать следующее:Имеющий в массив списков и ToString метод

Класс TransactionHistory используется для отслеживания последовательность транзакций. Выполните следующее определение для этого класса, предоставив тело метода toString, который возвращает многострочную строку, состоящую из вывода метода toString каждой транзакции, каждый из которых находится на новой строке. (Напомним, что строка может быть разбита на несколько строк, включая «\ n».) Будьте осторожны, чтобы убедиться, что ваш метод toString не возвращает строку, которая заканчивается символом новой строки. Чтобы помочь вам в этом, мы предоставляем (за кулисами) метод showNewlines для использования при тестировании метода toString. Изучите код, вставленный в прилагаемые тестовые примеры, чтобы узнать, как он может быть использован.

До сих пор, у меня есть следующий код:

public class TransactionHistory extends ArrayList<Transaction> 
{ 
    public String toString() 
    { 
    for (Transaction t : this) { 
     return t.toString(); 
    } 
    return ""; 
    } 
} 

И это один из тестов, которые мы обязаны использовать:

public static void main(String[] args) 
{ 
    TransactionHistory th = new TransactionHistory(); 
    th.add(new Deposit(100.0, "10:15", "10/23/2007")); 
    th.add(new Deposit(2.35, "11:05", "9/21/2007")); 
    th.add(new Withdrawal(50.0, "2:24", "11/1/2007")); 
    System.out.println(showNewlines(th.toString())); 
} 

С кодом, который я имею в настоящее время , все, что он может сделать, это распечатать первую строку транзакций.

Вот что печатается:

Deposit 100.0 10:15 10/23/2007 

Как бы идти о том, чтобы код распечатать все транзакции, которые были добавлены?

Спасибо, вся помощь приветствуется.

+0

Посмотрите на цикл for. Предположим, что у вас есть 3 транзакции, сколько раз будет выполняться тело цикла? – slashburn

+0

Не должен ли он зацикливаться 3 раза? – TaboriteTurtle

+0

Он должен. Но что происходит на первой итерации? Вы все еще в методе? – slashburn

ответ

1

Ваше return заявление ломает свой цикл, как это уже возвращает первый Transaction:

for (Transaction t : this) { 
    return t.toString(); 
    } 

Используйте StringBuilder для добавления каждого, а затем вернуться StringBuilder#toString()

быть осторожным, проблема указывает на то, что ваш ToString () НЕ ВОЗВРАЩАЕТСЯ СТРОКУ, КОТОРУЮ НАХОДИТСЯ С НОВЫМ ХАРАКТЕРОМ, что само по себе является другой историей.

substring(int beginIndex, int endIndex) и lastIndexOf(String str) следует позаботиться об этом.

String a = "foo\nbar\n"; 
    System.out.println(a.substring(0, a.lastIndexOf("\n"))); 

Надеюсь, это поможет.

Смежные вопросы