-4

线程“主”java.lang.IndexOutOfBoundsException 中的异常:索引:0,大小:0 在 java.util.ArrayList.rangeCheck(ArrayList.java:604)

在 arraylist.java 行中

private void rangeCheck(int index) {
    if (index >= size)
        throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

排队

List lstpp = getResult(pp) ;
    System.out.println("=====Persegi Panjang====");
    System.out.println("luas = "+((Integer)lstpp.get(0)));

请帮忙

4

7 回答 7

6

你想从一个空数组中获取一个元素。这就是为什么Size: 0from 异常

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

lstpp.get(0)所以在你填满数组之前你不能这样做。

于 2013-09-16T08:48:48.083 回答
4

lstpp是空的。您无法访问空列表的第一个元素。

一般来说,您可以检查是否size > index.

在您的情况下,您需要检查是否lstpp为空。(你可以使用!lstpp.isEmpty()

于 2013-09-16T08:45:54.103 回答
2

您在列表中没有任何元素,因此无法访问第一个元素。

于 2013-09-16T08:46:20.313 回答
2
for ( int i=0 ; i<=list.size() ; i++){
....}

通过执行这个 for 循环,循环将以引发的异常作为IndexOutOfBoundException原因执行,假设列表大小为 10 ,因此当索引 i 达到 10 时,即当 i=10 时,将引发异常index=size,即i=size众所周知,Java 认为索引从 0,1,2...等开始 Java 约定的表达式是index < size. 因此,此类异常的解决方案是将循环中的语句设为i<list.size()

for ( int i=0 ; i<list.size() ; i++){
...}
于 2016-07-07T10:04:00.670 回答
0

您正在尝试访问lstpp.get(0)空数组的第一个元素。!lstpp.isEmpty()只需将一个元素添加到您的数组并在访问元素之前进行检查

于 2013-09-16T08:46:29.730 回答
0

发生此错误是因为您的列表lstpp为空(索引 0 处没有任何内容)。所以要么你的函数有错误getResult(),要么空列表是正常的,你需要处理这种情况(通过之前检查列表的大小,或者捕获异常)。

于 2013-09-16T08:48:46.260 回答
0

用于if(index.length() < 0) 整数

或者

用于if(index.equals(null)字符串

于 2019-06-03T10:02:23.100 回答