我不知道为什么我此时得到StringIndexOutOfBoundExeption
:
for (int i = start; i < dataList.size() - 6
& dataList.get(i + 1).toString().substring(1).equals(lineNumber)
& !dataList.get(i + 1).toString().substring(1)
.equals("LIST_END"); i += 6)
{
if (!dataList.get(i).toString().contains("null")){
shortList.add(dataList.get(i).toString()); }
else {shortList.add("");}
if (!dataList.get(i+1).toString().contains("null")){
shortList.add(dataList.get(i + 1).toString());}
else {shortList.add("");}
if (!dataList.get(i+2).toString().contains("null")){
shortList.add(dataList.get(i + 2).toString());}
else {shortList.add("");}
if (!dataList.get(i+3).toString().contains("null")){
shortList.add(dataList.get(i + 3).toString()); }
else {shortList.add("");}
if (!dataList.get(i+4).toString().contains("null")){
shortList.add(dataList.get(i + 4).toString()); }
else {shortList.add("");}
这是在一个循环中,它添加了来自ArrayList
:
[null, 00010, 2013, 2.0, null,
等等。如您所见,第一个和第五个元素为null。
当我检查第一个元素时,如果它包含null
,它会抛出异常。
当我检查第五个元素时,如果它包含null
,则它不会,并在UI中显示一个空字符串" "
。
这是什么原因?
如果我评论第一个元素的if语句,我的UI会显示null
。 (这是我的Android应用程序中的代码TextView
,它显示ArrayList
显示null
的第一个元素
修改
回答所有评论:
dataList.size
是可变的,在本例中为7
是的,数据来自SAP接口,但没有使用游标
条件已添加
这是错误消息:
08-14 11:45:01.725:E / Request(18465): java.lang.StringIndexOutOfBoundsException:length = 0; index = 1, 指向第一个元素的if条件的行
* EDIT2:*
再次,指出我的问题:
我遇到了:
08-14 11:45:01.725:E / Request(18465): java.lang.StringIndexOutOfBoundsException:length = 0;索引= 1
但为什么呢?我的数组中有数据,并且if条件适用于第五个元素。为什么它会在第一个if条件下导致错误(根据我的日志)
答案 0 :(得分:3)
导致问题的代码很可能是for
语句中的条件:
dataList.get(i + 1).toString().substring(1)
当StringIndexOutOfBoundsException: length=0; index=1
返回空字符串时,此条件将抛出dataList.get(i + 1).toString()
。
答案 1 :(得分:0)
好的,我终于找到了错误,谢谢大家!
错误是由.substring(1)引起的,但不是因为我试图访问一个不存在的数组字段。
正如我所提到的,当我删除第一个if语句
时,不会发生错误if (!dataList.get(i).toString().contains("null"))
此循环中的所有内容都可以正常工作,甚至可以将null
替换为""
。
稍后,想要删除第一个属性前面的[
,所以我使用了
.substring(1)
当然现在失败了,因为字符串现在是""
。
我没有看到,因为正如我在提问和评论中提到的那样,我的日志点在我发布的循环中。当我尝试调试代码时,程序就会退出。
我无法告诉你原因,为什么会发生这种情况,但至少我现在知道,是什么导致了错误。
答案 2 :(得分:0)
如果dataList.get(0)
为null
,则无法为其toString()
调用,因为没有对象,因此无法调用方法toString()
。但我认为这不是java.lang.StringIndexOutOfBoundsException
。无论如何,您应该检查null
另一种方式 - if (dataList.get(i) != null)