如何在沒有從編譯器中獲取錯誤異常的情況下檢查java中的數組列表sizeof,如果arraylist沒有被初始化。 我已經嘗試了以下,但它不起作用。我得到這個消息: 異常線程「main」 java.lang.IndexOutOfBoundsException:指標:1,尺寸:1檢查數組列表的大小
ArrayList<String> str = new ArrayList<>();
if (str.size()>0)
如何在沒有從編譯器中獲取錯誤異常的情況下檢查java中的數組列表sizeof,如果arraylist沒有被初始化。 我已經嘗試了以下,但它不起作用。我得到這個消息: 異常線程「main」 java.lang.IndexOutOfBoundsException:指標:1,尺寸:1檢查數組列表的大小
ArrayList<String> str = new ArrayList<>();
if (str.size()>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)
。
通過初始化,你的意思是,如果一個對象被分配給一個參考
隨着代碼
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實際上是數組列表中的第二個元素,並且不存在。
這段代碼似乎沒問題,你確定exceling來自該行嗎? – IProblemFactory
除非您發現了一些新的嚴重錯誤,否則該代碼不會拋出該異常。 – oldrinb
如果你的集合的* size *是'1',那麼唯一有效的索引是'0'。 – vstm