java.lang.ArrayIndexOutOfBoundsException:2> = 0

时间:2013-07-25 06:27:52

标签: java exception exception-handling core

我正在处理一个项目并收到此错误“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:Index:3,Size:3

这里我们看不到像x&lt; = y

这样的东西

在我的代码中,我在ArrayIndexOutOfBoundsException之后发生了2&gt; = 0错误 所以我的问题是,我们什么时候得到像这样的2&gt; = 0错误?

4 个答案:

答案 0 :(得分: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的范围。

答案 1 :(得分:2)

您在列表中添加了三个项目,因此大小将 3 ,但索引会像0,1,2那样现在您想要获取list.get(3)等,然后它会抛出异常,size 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));

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

答案 2 :(得分:1)

你没有以

的形式看到erorr
  

java.lang.IndexOutOfBoundsException:Index:3,Size:3

     

这里我们看不到像x&lt; = 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));

答案 3 :(得分:0)

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

您确保索引在[0...yourArray.length-1].

范围内

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