【发布时间】:2020-08-12 15:02:03
【问题描述】:
这是我的代码
String endDate;
int currentIndex = 0;
int nextIndex = currentIndex + 1;
while(currentIndex < aList.size() - 1)
{
endDate = aList.get(nextIndex).getStartDate();
if(endDate == null)
{
endDate = episodeEnd.toString();
}
aList.get(currentIndex).setEndDate(endDate);
currentIndex++;
nextIndex++
}
aList 看起来像这样:
[itemA, 2019-09-18, 2019-11-13],
[itemB, 2019-11-13, 2019-12-19],
[itemC, 2019-12-19, null]
itemC 结束日期将始终为空,因为没有 itemD。
代码的重点是使每一项的结束日期与下一项的开始日期相同。如果没有下一项,则结束日期应该是代码 I.E. 中其他地方定义的单独时间段的结束日期。剧集结束
我遇到的问题是正确地迭代列表。
循环永远不会结束,因为我需要将最后一个索引设置为 aList.size() - 1 以防止 indexOutOfRange。由于它永远不会到达末尾,因此 itemC 永远不会被检查,因此 itemC 的结束日期保持为空。
我的另一个想法是使用嵌套 for 循环,外部循环查看 currentIndex,嵌套循环查看
如何编写代码以便检查 itemC 并避免 indexOutOfRange?
【问题讨论】:
-
endDate = episodeEnd.toString();... 小写 e 表示endDate? -
对不起...错字:-)。我已经编辑了代码
-
如果总是设置开始日期,那为什么还要修改
itemC呢?如果它是endDate应该保持null,那么这段代码已经可以工作了。 -
结束日期不应保持为空。结束日期应该是下一个项目的开始日期,或者在 itemC 的情况下是不同时间段的结束日期
-
最简单的方法是在循环外的下一条语句中设置 itemC 的结束日期,例如 aList.get(nextIndex).setEndDate(endDate)。如果您想在循环中执行此操作,请引入一个 if 语句来检查 currentIndex == aList.size() 的值并将其设置在其中,并让其他所有内容在此 if 语句的 else 子句中运行。
标签: java loops for-loop while-loop iteration