[英]Using if statement to prevent “java.lang.IndexOutOfBoundsException”
我正在使用一種返回從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語句來防止此異常,以便程序在列表為空的情況下執行其他操作嗎?
如果要確保列表不為空,並且包含至少兩個元素,請執行以下操作:
if( placesList != null && placesList.size() >= 2)
可以定義列表,但其中沒有字符串(空列表)。 您還應該檢查列表的大小:
ArrayList<String> placesList = osm.getPlace(poi, listingCity, listingState);
if (placesList != null && placesList.size() > 1)
{
poi = placesList.get(0);
poiStreet = placesList.get(1);
}
列表對象不為null,但其中的內容可以為零
使用placeList.size()檢查內部內容的數量。
如果ArrayList == null
返回true
,則並不意味着它為空,這意味着它尚未初始化,並且指向null
。
為了檢查您的列表是否為空,您可以使用
if (!placesList.isEmpty()){
}
僅僅因為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);
}
檢查以確保ArrayList不為null,然后添加第二個條件以確保大小等於2,以確保它包含您期望的內容
if (placesList != null && placesList.size() == 2)
嘗試
if (placeList.size() > 1)
您應該檢查arraylist的長度。 就像是
if (placesList.size() > 0)
解決此問題的一種方法是:
if(placesList.isEmpty())
{
//do something here when empty
}
else
{
poi = placesList.get(0);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.