vs97
vs97

Reputation: 5859

Writing strings after looping

I am incorrectly looping through a list of FreeEvent Objects, which consist of a String and a corresponding Enum.

private List<FreeEvent> freeEvents = new ArrayList<FreeEvent>();

My JUnit test gives out the following error, which is self-explanatory:

org.junit.ComparisonFailure: expected: Halloween Evening[1: FREE Halloween Evening2: FREE Halloween Evening3: FREE ] but was:Halloween Evening[3: FREE]

I understand what the error is, but I am not sure how to fix the loop to make it remember all the values it looped through.

public String displayFreeEvents() {

    String name = null;
    EventType type = null;

    for (int i = 0; i < freeEvents.size(); i++) {
        name = freeEvents.get(i).getEventName();
        type = freeEvents.get(i).getEventType();
    }

    String event = name + ": " + type;
    return event;

}

Test Case

     public void testDisplayFreeEvents() {
    EventHistory eventHistory = new EventHistory();

    FreeEvent event1 = new FreeEvent("Halloween Evening1",EventType.FREE);
    FreeEvent event2 = new FreeEvent("Halloween Evening2",EventType.FREE);
    FreeEvent event3 = new FreeEvent("Halloween Evening3",EventType.FREE);

    eventHistory.addFreeEvent(event1);
    eventHistory.addFreeEvent(event2);
    eventHistory.addFreeEvent(event3);

    assertEquals("Halloween Evening1: FREE"+"\n"+"Halloween Evening2: FREE"+"\n"+"Halloween Evening3: FREE"+"\n",eventHistory.displayFreeEvents());

 }

Upvotes: 0

Views: 60

Answers (1)

karvoynistas
karvoynistas

Reputation: 1285

You have to use the StringBuilder class in order to build your string through the iteration.

So , your method should look like this :

public String displayFreeEvents() {

  StringBuilder stringBuilder = new StringBuilder();

  for (int i = 0; i < freeEvents.size(); i++) {
    String name = "", type = "";
    name = freeEvents.get(i).getEventName();
    type = freeEvents.get(i).getEventType();
    stringBuilder.append(name+ " " + type); // you can add also the \n character if you wish
  }


  return stringBuilder.toString();

}

Upvotes: 1

Related Questions