我正在使用一种方法,该方法返回从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语句来阻止此异常,以便程序在列表为空时执行其他操作吗?
答案 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);
}
答案 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);
}