public void addClimb(String peakName, int climbTime){
for(int i = 0; i < climbList.size()-1; i++){
if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) <= 0){
climbList.add(i, new ClimbInfo(peakName, climbTime));
} else {
climbList.add(new ClimbInfo(peakName, climbTime));
}
}
}
目标是让它接受peakName和climbTime,使其在climbList中的climbTime对象之间循环,检查参数的第一个字母何时在循环中的climbTime的第一个字母之前,并尽快将其放置发生这种情况,但是当我输入多个ClimbInfos并尝试打印它们时,我收到了越界错误。此方法未正确将ClimbInfo正确插入climbTime。
有人可以解释我在做什么错吗?
最佳答案
根据初始条件,您的函数将执行以下两项操作之一:
如果climbList
最初为空,或者最初仅包含一个元素,则测试i < climbList.size() - 1
将失败,因此该函数将立即返回,不执行任何操作。
如果climbList
最初包含多个元素,则测试i < climbList.size() - 1
将始终成功,因为每次循环都将为climbList
添加一个元素,并使i
递增1。因此i < climbList.size() - 1
在迭代之前为true,然后在迭代之后为true。所以你有一个无限循环。
我认为这些都不是您想要的。