我发现arrayList minuteList
元素之间的最大区别是在此位置后用min_value
递增元素以重新填充时间表。在当前,总是添加相同的元素。
minuteList记录了while语句:
[288, 318, 346, 376, 406, 436, 466, 1006, 1036, 1066, 1096, 1126, 1156]
几个循环后minuteList`:
[288, 318, 346, 376, 406, 436, 466, 496, 496, 496, 496, 1006, 1036, 1066, 1096, 1126, 1156]
正确的结果应该是
[288, 318, 346, 376, 406, 436, 466, 496, 526, 556, 586, 616,..., 1006, 1036, 1066, 1096, 1126, 1156]
代码:
Collections.sort(diffArray);
int element = diffArray.get(diffArray.size() - 1).getElement();
int nextElement = diffArray.get(diffArray.size()-1).getNextElement();
int differance = nextElement - element;
int elementIndex = minuteList.indexOf(element);
while(differance > min_value){
int addTime = minuteList.get(elementIndex) + min_value;
minuteList.add(elementIndex + 1, addTime);
}
答案 0 :(得分:1)
您的循环会继续将相同的值(minuteList.get(elementIndex) + min_value
)添加到elementIndex + 1
的相同位置(ArrayList
),这会解释您看到的多个496元素。
如果您希望在每次迭代中添加新值,则需要在每次迭代中更改addTime
:
int addTime = minuteList.get(elementIndex) + min_value;
while(differance > min_value){
minuteList.add(++elementIndex, addTime);
addTime += min_value;
}
请注意,我也在递增elementIndex
。否则,所有新元素将被添加到同一位置,向前推送先前添加的元素,因此它们将以相反的顺序添加。
您可能希望在实际修改differance
或min_value
的循环中添加一些代码。否则循环将永远不会结束。