【问题标题】:Writing strings after looping循环后写入字符串
【发布时间】:2015-11-30 23:21:28
【问题描述】:

我错误地循环了一个 FreeEvent 对象列表,该列表由一个字符串和一个相应的枚举组成。

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

我的 JUnit 测试给出以下错误,这是不言自明的:

org.junit.ComparisonFailure:预期:万圣节之夜[1:免费万圣节之夜 2:免费万圣节之夜 3:免费],但原为:万圣节之夜[3:免费]

我了解错误是什么,但我不确定如何修复循环以使其记住循环通过的所有值。

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;

}

测试用例

     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());

 }

【问题讨论】:

  • 你能发布你的测试用例吗?
  • 您正在迭代,但直到 for 循环之后才对 nametype 执行任何操作,因此它们具有来自 freeEvents.get(freeEvents.size()-1) 的最后一个值。
  • 我也没有看到换行符发生,尽管在断言中你期望它与\n
  • 通常最好使用 System.lineSeparator 而不是 "\n"。

标签: java string list loops


【解决方案1】:

您必须使用StringBuilder 类才能通过迭代构建您的字符串。

所以,你的方法应该是这样的:

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();

}

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 2019-09-16
    • 2013-05-14
    • 2020-05-17
    • 1970-01-01
    • 2015-04-21
    • 2015-09-07
    • 1970-01-01
    相关资源
    最近更新 更多