Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 此方法不会将对象插入ArrayList。为什么? public void addgramb(字符串peakName,int-grambtime){ 对于(int i=0;i_Java - Fatal编程技术网

Java 此方法不会将对象插入ArrayList。为什么? public void addgramb(字符串peakName,int-grambtime){ 对于(int i=0;i

Java 此方法不会将对象插入ArrayList。为什么? public void addgramb(字符串peakName,int-grambtime){ 对于(int i=0;i,java,Java,,函数将执行以下两项操作之一: 如果gramplist最初为空,或者最初仅包含一个元素,则测试i

,函数将执行以下两项操作之一:

  • 如果
    gramplist
    最初为空,或者最初仅包含一个元素,则测试
    i
    将失败,因此函数将立即返回,不执行任何操作
  • 如果
    gramplist
    最初包含多个元素,那么测试
    i
    将始终成功,因为每次通过循环都会向
    gramplist
    添加一个元素,并将
    i
    增加一个。因此
    i
    在迭代之前为真,然后在迭代之后为真。因此,您有一个无限循环

我认为这两个函数都不是您想要的。

根据初始条件,您的函数将执行以下两个操作之一:

  • 如果
    gramplist
    最初为空,或者最初仅包含一个元素,则测试
    i
    将失败,因此函数将立即返回,不执行任何操作
  • 如果
    gramplist
    最初包含多个元素,那么测试
    i
    将始终成功,因为每次通过循环都会向
    gramplist
    添加一个元素,并将
    i
    增加一个。因此
    i
    在迭代之前为真,然后在迭代之后为真。因此,您有一个无限循环

我认为这两个都不是你想要的。

基本上你是在整个列表中循环,每次循环都添加一条记录。 您可能需要以下内容:

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));
         }
     }
 } 
public void addgramb(字符串peakName,int-grambtime){
对于(int i=0;i=0){
添加(i,新的攀登信息(peakName,攀登时间));
返回;
}
}
添加(新的攀登信息(peakName,攀登时间));
} 

基本上,您是在整个列表中循环,每次循环都会添加一条记录。 您可能需要以下内容:

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));
         }
     }
 } 
public void addgramb(字符串peakName,int-grambtime){
对于(int i=0;i=0){
添加(i,新的攀登信息(peakName,攀登时间));
返回;
}
}
添加(新的攀登信息(peakName,攀登时间));
} 

您未能解释问题所在

此方法未正确地将爬升信息插入爬升时间

没有告诉我发生了什么。运行时异常?编译错误?还是最后留下一个空集合

如果收到异常,请将其与堆栈跟踪一起包含

如果我们假设您有一个空集合,那只能意味着一件事:永远不会达到for循环条件。我可以肯定地说,这是因为If语句有一个else插入。因此,循环的每次迭代都保证插入。因此,循环不能迭代

我怀疑是尺寸检查的问题

public void addClimb(String peakName, int climbTime){ 
  for(int i = 0; i < climbList.size(); i++){
    if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) >= 0){
       climbList.add(i, new ClimbInfo(peakName, climbTime));
       return;
    }
  }

  climbList.add(new ClimbInfo(peakName, climbTime));

 } 
for(int i=0;i
这种逻辑几乎肯定是错误的,原因有两个:

  • 如果从空集合开始,则grampList.size()=0,这意味着grampList.size()-1=-1.0不小于-1,因此条件失败,循环退出
  • 假设您从一个非空列表开始,那么实际上您将插入。然而,循环的每次迭代都会重新检查大小,但在循环中,您是在追加。本质上,您说的是“对于爬升列表中的每个元素,向爬升列表添加一个元素”。除非以空列表开始,否则在某个时候会耗尽内存

  • 你没有解释问题是什么

    此方法未正确地将爬升信息插入爬升时间

    没有告诉我发生了什么。运行时异常?编译错误?还是最后留下一个空集合

    如果收到异常,请将其与堆栈跟踪一起包含

    如果我们假设您有一个空集合,那只能意味着一件事:永远不会达到for循环条件。我可以肯定地说,这是因为If语句有一个else插入。因此,循环的每次迭代都保证插入。因此,循环不能迭代

    我怀疑是尺寸检查的问题

    public void addClimb(String peakName, int climbTime){ 
      for(int i = 0; i < climbList.size(); i++){
        if(peakName.substring(0,1).compareTo(climbList.get(i).getName().substring(0,1)) >= 0){
           climbList.add(i, new ClimbInfo(peakName, climbTime));
           return;
        }
      }
    
      climbList.add(new ClimbInfo(peakName, climbTime));
    
     } 
    
    for(int i=0;i
    这种逻辑几乎肯定是错误的,原因有两个:

  • 如果从空集合开始,则grampList.size()=0,这意味着grampList.size()-1=-1.0不小于-1,因此条件失败,循环退出
  • 假设您从一个非空列表开始,那么实际上您将插入。然而,循环的每次迭代都会重新检查大小,但在循环中,您是在追加。本质上,您说的是“对于爬升列表中的每个元素,向爬升列表添加一个元素”。除非以空列表开始,否则在某个时候会耗尽内存

  • 您不应该在迭代列表时修改它

    我假设您在这里试图实现的是自定义排序。为此,您必须在
    grampinfo
    中实现可比较的接口,并使用
    Collections.sort(gramplist)


    阅读更多信息。

    在迭代列表时不应修改列表

    我假设您在这里试图实现的是自定义排序。为此,您必须在
    climpinfo
    中实现可比较的接口,并使用