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
一个。所以i < climbList.size() - 1
迭代前为真,则迭代后为真。所以你有一个无限循环。
我认为这两者都不是您想要的。
关于java - 此方法不会将对象插入到 ArrayList 中。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16410105/