使用if语句来防止“java.lang.IndexOutOfBoundsException”

时间:2013-11-28 01:42:17

标签: java

我正在使用一种方法,该方法返回从Web服务获取的列表。此列表有时不包含任何内容。这导致“java.lang.IndexOutOfBoundsException”

  ArrayList<String> placesList = osm.getPlace(poi, listingCity, listingState);
  if (placesList != null) 
  { 
    poi = placesList.get(0);
    poiStreet = placesList.get(1); 
  }

我已使用上面的if语句来防止异常,但它不起作用。无论如何,我可以通过使用if语句来阻止此异常,以便程序在列表为空时执行其他操作吗?

9 个答案:

答案 0 :(得分:4)

如果要确保列表不为null,并且包含至少两个元素,请执行以下操作:

if( placesList != null && placesList.size() >= 2)

答案 1 :(得分:1)

可以定义列表,但其中没有字符串(空列表)。您还应该检查列表的大小:

ArrayList<String> placesList = osm.getPlace(poi, listingCity, listingState);
if (placesList != null && placesList.size() > 1) 
{ 
  poi = placesList.get(0);
  poiStreet = placesList.get(1); 
}

答案 2 :(得分:0)

列表对象不为null,但其中的内容可以为零

使用placeList.size()检查内部的内容数量。

答案 3 :(得分:0)

如果ArrayList == null返回true并不意味着它为空,则表示它尚未初始化并指向null

为了检查您的列表是否为空,您可以使用

if (!placesList.isEmpty()){

}

答案 4 :(得分:0)

仅仅因为ArrayList对象不为null,并不意味着其中有任何元素。

您可以调用isEmpty()或size()方法来确定数组中是否有任何元素。

试试这个:

  ArrayList<String> placesList = osm.getPlace(poi, listingCity, listingState);
  if (placesList != null && placesList.isEmpty() == false ) 
  { 
    poi = placesList.get(0);
    poiStreet = placesList.get(1); 
  }

Javadoc reference

答案 5 :(得分:0)

检查以确保ArrayList不为null,然后添加第二个条件,确保大小等于2以确保它包含您期望的内容

if (placesList != null && placesList.size() == 2)

答案 6 :(得分:0)

尝试

 if (placeList.size() > 1)

答案 7 :(得分:0)

你应该检查arraylist的长度。

之类的东西
if (placesList.size() > 0)

答案 8 :(得分:0)

解决这个问题的一种方法是:

 if(placesList.isEmpty())
 {
   //do something here when empty
 }
 else
 {
   poi = placesList.get(0);
 }