【问题标题】:java.lang.ArrayIndexOutOfBoundsException: 2 >= 0java.lang.ArrayIndexOutOfBoundsException: 2 >= 0
【发布时间】:2013-07-25 06:27:52
【问题描述】:

我正在处理一个项目并收到此错误“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));
    }
}

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

在这里我们看不到 x

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

【问题讨论】:

  • list.get(3) 应该返回什么?

标签: java exception exception-handling core


【解决方案1】:

您正在创建一个大小为动态的 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 范围的元素。

【讨论】:

    【解决方案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));
    

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

    【讨论】:

      【解决方案3】:

      您没有以

      的形式看到错误

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

      在这里我们看不到 x

      因为 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));
      

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-30
          • 2014-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多