【问题标题】:Java ArrayList, I don't know what an IndexOutOfBoundsException is [duplicate]Java ArrayList,我不知道 IndexOutOfBoundsException 是什么[重复]
【发布时间】:2021-03-22 11:35:07
【问题描述】:

这是代码,如果 par1 或 par2 是偶数,则添加数字并删除。 给我这个error

ArrayList<Integer> s;
Scanner sc=new Scanner(System.in);
Scanner sm=new Scanner(System.in);
s= new ArrayList<>();
int dorinta=sc.nextInt();
if(dorinta ==1)
    {int numere =sm.nextInt();
    for(int i=0;i<numere;i++)
    {
        Integer x=sc.nextInt();
        s.add(x);
    }
}
Random random = new Random();
while(s.size()!=0)
{int i=s.size();
    int par1 = random.nextInt(20);

    System.out.println(par1);

    if(par1 % 2==0)
    {
       s.remove(s.size());
    }
    int par2= random.nextInt(20);

    Integer j= random.nextInt(15);

    System.out.println(par2);
    if(par2 %2 ==0)
    {
        s.add(j);
    }

    System.out.println(s);
}

【问题讨论】:

  • 这意味着您正在尝试获取仅包含 6 个元素的列表的第 7 个元素。
  • s.remove(s.size()); 将始终抛出该异常。 Java 中的数组和列表是 0 索引的。
  • @Stultuske 是对的,但更一般地说,这意味着您正在尝试访问不存在的列表索引。例如如果列表的长度为 6,则索引 6 不存在,因为列表从索引 0 开始。

标签: java arraylist


【解决方案1】:

正如@QBrute 所指出的,数组和列表是零索引的。这意味着第一个元素位于第零个索引处,最后一个元素位于索引处 (size()-1)。您还需要在删除元素之前检查列表是否为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-18
    • 2013-02-07
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多