Android </list>中的字符串<list> IndexOutOfBoundsException问题

时间:2015-04-10 13:28:28

标签: android indexoutofboundsexception

我使用以下代码从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
                        }
                    }

异常屏幕截图

enter image description here

3 个答案:

答案 0 :(得分:2)

检查extraItemEntityArraytopDescription数组的长度。

topDescription长度小于extraItemEntityArray的长度,因此投掷IndexOutOfBoundException

答案 1 :(得分:1)

异常的原因很明显:您正在尝试获取索引大于列表大小的元素。其次,当if块中的代码至少执行一次时出现错误,在这种情况下k变得大于resultTopping大小,导致{ArrayOutOfBoundsException 1}}。
可能是重写if语句并摆脱异常的最简单方法是:

if ((objectE.getString("Description")) != null && (objectE.getString("Type")).equals("E")) {
    final String desc = objectE.getString("Description");
    topDescription.add(desc);
    resultTopping.add(desc);
}

答案 2 :(得分:1)

由于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);

因为它必然是相同的;)