如何修复java.lang.IndexOutOfBoundsException

问题描述 投票:0回答:7

错误信息:

线程“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)));

我该如何修复它?

java web-services arraylist
7个回答
6
投票

您想从空数组中获取一个元素。这就是为什么异常中的

Size: 0

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

所以在填满数组之前你不能做

lstpp.get(0)


5
投票

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

一般来说,你可以检查是否

size > index

就您而言,您需要检查

lstpp
是否为空。 (你可以使用
!lstpp.isEmpty()


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++){
...}

2
投票

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


0
投票

发生此错误是因为您的列表

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


0
投票

使用

if(index.length() < 0)
表示整数

使用

if(index.equals(null)
表示字符串


0
投票

您正在尝试访问空数组的第一个元素

lstpp.get(0)

只需将一个元素添加到数组中,并在访问元素之前检查是否有

!lstpp.isEmpty()

© www.soinside.com 2019 - 2024. All rights reserved.