簡體   English   中英

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

[英]Using if statement to prevent “java.lang.IndexOutOfBoundsException”

我正在使用一種返回從Web服務獲取的列表的方法。 該列表有時不包含任何內容。 結果為“ j​​ava.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); 
  }

Javadoc參考

檢查以確保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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM