1

我正在处理一个项目并收到此错误“java.lang.ArrayIndexOutOfBoundsException:2 > = 0”我有与此相关的问题,我知道这是 ArrayIndexOutOfBoundsException :P 但看看这个示例,

import java.awt.List;
import java.util.ArrayList;


public class Oube {
    public static void main(String[] args) {

         ArrayList<String> list = new ArrayList<String>();

         list.add("Hello");
         list.add("World");
         list.add("World");

         System.out.println(list.size());
         System.out.println(list.get(0));
         System.out.println(list.get(1));
         System.out.println(list.get(2));
         System.out.println(list.get(3));
         System.out.println(list.get(4));
         System.out.println(list.get(5));
         System.out.println(list.get(6));
    }
}

我们收到以下错误,线程“main”中的异常 java.lang.IndexOutOfBoundsException:索引:3,大小:3

在这里我们看不到 x<=y

在我的代码中,我在 ArrayIndexOutOfBoundsException 之后出现 2>=0 错误所以我的问题是,我们什么时候得到这样的 2 >= 0 错误?

4

4 回答 4

3

您正在创建一个大小是动态的 Arraylist 对象

ArrayList<String> list = new ArrayList<String>();

虽然您只添加了 3 个元素

list.add("Hello");
list.add("World");
list.add("World");

这将创建一个大小为 3 的 ArrayList,其索引从 0 到 2。从大于 2 的索引调用时,您有

 System.out.println(list.get(3));
 System.out.println(list.get(4));
 System.out.println(list.get(5));
 System.out.println(list.get(6));

您将收到一个,ArrayIndexOutOfBoundsException因为您正在调用 ArrayList 中不存在索引或索引超出 ArrayList 范围的元素。

于 2013-07-25T06:49:54.643 回答
2

您在列表中添加了三个项目,因此大小将为3,但0,1,2现在您想要获取list.get(3)等,索引会像这样,然后它将抛出异常,大小为3,最后一个元素位于位置2。如果你会看到你的代码

 System.out.println(list.get(3));
 System.out.println(list.get(4));
 System.out.println(list.get(5));
 System.out.println(list.get(6));

您将访问列表中不存在的那些元素,因此当您尝试访问不存在的数组项时会引发此异常:

于 2013-07-25T06:31:16.570 回答
1

您没有看到以下形式的错误

java.lang.IndexOutOfBoundsException:索引:3,大小:3

在这里我们看不到 x<=y

因为 Arraylist 是一个动态集合,它会根据需要增长。在处理固定大小的数组时,您会遇到上述异常。

所有这些语句都会抛出异常,因为 arraylist 在所需索引处没有元素:

     System.out.println(list.get(3));
     System.out.println(list.get(4));
     System.out.println(list.get(5));
     System.out.println(list.get(6));
于 2013-07-25T06:30:19.757 回答
0

在运行时检查所有数组访问;尝试使用小于零或大于或等于数组长度的索引会导致抛出 ArrayIndexOutOfBoundsException。

你确保你的索引在范围内[0...yourArray.length-1].

所以你可以访问 0,1,2

于 2013-07-25T06:32:51.890 回答