повторяющиеся циклы, сравнивающие текущий индекс со следующим индексом java - PullRequest
0 голосов
/ 28 апреля 2020

Вот мой код

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]

item C дата окончания всегда будет нулевой, так как нет элемента D.

Смысл кода состоит в том, чтобы сделать endDate каждого элемента таким же, как дата начала следующего элемента. Если следующего элемента нет, тогда конечная дата должна быть конечной датой отдельного периода времени, определенного в другом месте кода IE episodeEnd

Проблема, с которой я сталкиваюсь, заключается в правильном повторении списка.

L oop никогда не достигает конца, так как мне нужно установить последний индекс в aList.size () - 1, чтобы предотвратить indexOutOfRange. Так как он никогда не достигает конца, элемент C никогда не проверяется, следовательно, дата окончания элемента C остается нулевой.

Моя другая мысль заключалась в том, чтобы использовать вложенные циклы для внешнего l oop, смотрящего на currentIndex и вложенный l oop, глядя на

Как мне это кодировать, чтобы элемент C проверялся и избегал indexOutOfRange?

1 Ответ

0 голосов
/ 28 апреля 2020

Переменная currentIndex будет равна aList.size() - 1, ссылаясь на последний элемент в списке, поэтому вы можете установить его endDate сразу после l oop:

while (currentIndex < aList.size() - 1) {
// ...
}
aList.get(currentIndex).setEndDate(episodeEnd.toString());
...