错误信息:
线程“main”中的异常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)));
我该如何修复它?
您想从空数组中获取一个元素。这就是为什么异常中的
Size: 0
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
所以在填满数组之前你不能做
lstpp.get(0)
。
lstpp
是空的。您无法访问空列表的第一个元素。
一般来说,你可以检查是否
size > index
。
就您而言,您需要检查
lstpp
是否为空。 (你可以使用!lstpp.isEmpty()
)
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++){
...}
列表中没有任何元素,因此无法访问第一个元素。
发生此错误是因为您的列表
lstpp
为空(索引 0 处没有任何内容)。因此,要么您的 getResult()
函数存在错误,要么空列表是正常的,您需要处理这种情况(通过之前检查列表的大小,或捕获异常)。
使用
if(index.length() < 0)
表示整数
或
使用
if(index.equals(null)
表示字符串
您正在尝试访问空数组的第一个元素
lstpp.get(0)
。
只需将一个元素添加到数组中,并在访问元素之前检查是否有
!lstpp.isEmpty()
。