2012-09-09 91 views
0

如何在沒有從編譯器中獲取錯誤異常的情況下檢查java中的數組列表sizeof,如果arraylist沒有被初始化。 我已經嘗試了以下,但它不起作用。我得到這個消息: 異常線程「main」 java.lang.IndexOutOfBoundsException:指標:1,尺寸:1檢查數組列表的大小

ArrayList<String> str = new ArrayList<>(); 
if (str.size()>0) 
+0

這段代碼似乎沒問題,你確定exceling來自該行嗎? – IProblemFactory

+0

除非您發現了一些新的嚴重錯誤,否則該代碼不會拋出該異常。 – oldrinb

+1

如果你的集合的* size *是'1',那麼唯一有效的索引是'0'。 – vstm

回答

0

沒有什麼在你發佈,將引發IndexOutOfBoundsException的代碼。我假設你之前沒有檢查尺寸,打電話給str.get(0)

無論如何,你的代碼是好的,即你應該能夠把它擴大到像做了以下內容:

List<String> someStrings = new ArrayList<String>(); 
... 
if (someStrings.size() > 0) { 
    System.out.println("First element of list is: " + someStrings.get(0)); 
} else { 
    System.out.println("List is empty"); 
} 

然而,對於潔淨度我會建議使用if (!someStrings.isEmpty())代替,檢查同樣的事情, if (someStrings.size() > 0)

0

通過初始化,你的意思是,如果一個對象被分配給一個參考

隨着代碼

List<String> str; 

如果調用str.size(),它會拋出一個空指針異常,因爲你有未將對象分配給此列表引用。

要分配的參考,那麼你可以做

List<String> str = new Arraylist<String>(); 

STR現在指向數組列表對象。

現在,您可以撥打

str.isEmpty() 

,看看如果列表中的任何內容。

列表是zero based所以如果你調用str.get(0),那麼你將得到一個IndexOutOfBounds異常。如果添加元素

str.add("hello") 

,那麼你不能獲得的第一個元素(索引爲0),因爲其中沒有在那裏

你可以叫

str.get(0) 

將返回「你好」

如果您調用str.get(1),那麼您將再次獲得IndexOutOfBound,因爲索引1實際上是數組列表中的第二個元素,並且不存在。