Android 中的 String<List> IndexOutOfBoundsException 问题
Issue with String<List> IndexOutOfBoundsException in Android
我使用下面的代码从 List 中提取数据,当我尝试使用下面的代码时,我得到了 IndexOutOfBoundsException
、
这是什么原因,谁能帮我解决这个问题
for (int k = 0; k < extraItemEntityArray.length(); k++) {
JSONObject objectE = extraItemEntityArray
.getJSONObject(k);
if ((objectE.getString("Description")) != null
&& (objectE.getString("Type"))
.equals("E")) {
topDescription.add(objectE
.getString("Description"));
resultTopping.add(topDescription.get(k)); //exception occurs here
}
}
异常屏幕截图
检查 extraItemEntityArray
和 topDescription
数组的长度。
topDescription
长度小于 extraItemEntityArray
的长度,因此抛出 IndexOutOfBoundException
异常原因很明确:您试图获取索引大于列表大小的元素。其次,当 if
块中的代码至少有一次未被执行时会出现错误,在这种情况下 k
变得大于 resultTopping
大小,导致 ArrayOutOfBoundsException
.
重写 if
语句并消除异常的最简单方法可能是:
if ((objectE.getString("Description")) != null && (objectE.getString("Type")).equals("E")) {
final String desc = objectE.getString("Description");
topDescription.add(desc);
resultTopping.add(desc);
}
由于 if 语句,代码至少有一次没有执行行:
topDescription.add(objectE.getString("Description"));
然后,通常情况下,当您尝试获取一个值时,它可能会超出范围。
如果您想始终获取最新值,请替换这些行:
topDescription.add(objectE.getString("Description"));
resultTopping.add(topDescription.get(k));
与以下
String desc = objectE.getString("Description");
topDescription.add(desc);
resultTopping.add(desc);
因为必然是同一件事 ;)
我使用下面的代码从 List 中提取数据,当我尝试使用下面的代码时,我得到了 IndexOutOfBoundsException
、
这是什么原因,谁能帮我解决这个问题
for (int k = 0; k < extraItemEntityArray.length(); k++) {
JSONObject objectE = extraItemEntityArray
.getJSONObject(k);
if ((objectE.getString("Description")) != null
&& (objectE.getString("Type"))
.equals("E")) {
topDescription.add(objectE
.getString("Description"));
resultTopping.add(topDescription.get(k)); //exception occurs here
}
}
异常屏幕截图
检查 extraItemEntityArray
和 topDescription
数组的长度。
topDescription
长度小于 extraItemEntityArray
的长度,因此抛出 IndexOutOfBoundException
异常原因很明确:您试图获取索引大于列表大小的元素。其次,当 if
块中的代码至少有一次未被执行时会出现错误,在这种情况下 k
变得大于 resultTopping
大小,导致 ArrayOutOfBoundsException
.
重写 if
语句并消除异常的最简单方法可能是:
if ((objectE.getString("Description")) != null && (objectE.getString("Type")).equals("E")) {
final String desc = objectE.getString("Description");
topDescription.add(desc);
resultTopping.add(desc);
}
由于 if 语句,代码至少有一次没有执行行:
topDescription.add(objectE.getString("Description"));
然后,通常情况下,当您尝试获取一个值时,它可能会超出范围。
如果您想始终获取最新值,请替换这些行:
topDescription.add(objectE.getString("Description"));
resultTopping.add(topDescription.get(k));
与以下
String desc = objectE.getString("Description");
topDescription.add(desc);
resultTopping.add(desc);
因为必然是同一件事 ;)