当前位置: 首页 > 知识库问答 >
问题:

Java数组列表显示索引越界

商迪
2023-03-14

我的目标是创建一个新的实例,其中前2个元素是原始元素,之后是最后3个元素的中间值。例如,< code>[5,2,9,1,7,4,6,3,8]变成< code>[5,2,5,2,7,4,6,4,6]。

我解决这个问题的方法是创建2个新的数组列表,其中一个是从索引2开始的3个元素之间的子数组,具有(i-2,i 1),排序,最后将新子数组的索引1放入我的新数组列表中。但是,这会遇到索引越界错误。

import java.util.*;

 public class P2J4
{
    public static void main (String[]args){
       List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
       ArrayList<Integer>newarr=new ArrayList<>();
       newarr.add(0,items.get(0));
       newarr.add(1,items.get(1));
    
       for(int i=2;i<items.size();i++){
          
           List<Integer> sub = items.subList(i-2,i+1);
      
           Collections.sort(sub);
           newarr.set(i,sub.get(1));
        }
    }
}

共有1个答案

黎同
2023-03-14

< code>ArrayList.set仅更新现有元素。如果给定的索引超出界限,它不会追加元素。您需要使用< code>ArrayList.add或预先添加足够的元素,以便< code > new arr . size()= = items . size()

newarr.add(sub.get(1));
import java.util.*;

 public class P2J4
{
    public static void main (String[]args){
       List<Integer> items = Arrays.asList(16, 42, 99, 17, 2);
       ArrayList<Integer>newarr=new ArrayList<>();
       newarr.add(0,items.get(0));
       newarr.add(1,items.get(1));
    
       for(int i=2;i<items.size();i++){
          
           List<Integer> sub = items.subList(i-2,i+1);
      
           Collections.sort(sub);
           newarr.add(sub.get(1));
        }
    }
}
 类似资料:
  • 问题内容: 在我的游戏代码中,我尝试添加一张手牌。一旦我做完了,我的数组就超出了范围。一切看起来都不错,但也许我缺少了一些东西。 仅供参考,一个和两个是Player实例。来自Main类的相关代码(对格式感到抱歉。我很想将其传输到Stack Overflow): 卡类: 玩家等级: 问题答案: 问题出在你的循环上 没有其他任何值可设置,因此此循环不断循环,直到所有玩家拥有超过52张牌为止。一旦某人拥

  • 这是我的代码: 该程序的目的是要求用户输入一个字符串,然后统计字符串中每个字符的使用次数。 当我去编译程序时,它工作正常。当我运行程序时,我可以在弹出框中输入字符串,但是在我提交字符串并按确定后,我得到一个错误,说 我不完全确定问题是什么或如何解决。

  • 这似乎微不足道,但也许我对向量的理解并不是它应该是的。我在这段代码上得到[java.lang.ArrayIndexOutOfBoundsException:Array index out of range:1]。错误发生在第3行。既然look是基于向量的大小,那么数组怎么会越界呢? 方法“getChangeSets()”返回一个列表。该列表最初是作为向量创建的。

  • 我一直在四处寻找是否有任何东西可以帮助我,但我不太了解人们的回答,任何我所了解的似乎都不能解决问题!所以基本上正如标题所说,我得到了一个数组索引越界异常,但我不知道为什么。非常感谢任何帮助。 代码:

  • 我把这个参数发送给我的strut动作 Cdata[1]=bar 在我的行动中,我对索引和值感兴趣。如OGNL文档所示,我为CDATA定义了一个getter/setter对: 这是我得到的例外: 如果我定义一个公共成员变量我在日志中没有看到任何异常,但我的setter也没有被调用。如果成员变量是私有的,我再次得到另一个异常。

  • 我犯的错误 我的密码 我试图将数组的最后5个元素存储在temp 2中。那我就换了。有更简单的方法吗?将数组的前五个元素与后五个元素切换?你会如何用for循环切换它们?