java - 此方法不会将对象插入到 ArrayList 中。为什么?

标签 java

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/

相关文章:

java - 如何在单个打印语句中返回数组中的多个数字

java - Java Web 应用程序中的异步任务

java - 如何通过套接字将 double 或任何其他随机类型从 Java 传递到 C++?

java意外和不负责任的循环中断

java - 如何在 Java 中将数组列表从一个类复制到另一个类?

java - 进程循环运行而不是每次都记录

java - 从数组中查找出现次数最多的 3 个整数

java - SQL 更新无法正常工作

java - JSP 中的隐藏输入在将其传递给 servlet 时会产生 null

java - 从 InputStream 读取时出现 IOException