2016-10-01 82 views
-5

我有一個問題要求讀取索引,並檢查它是否爲空,如果是,它的位置大於或等於67(從0開始),我必須打印出位於索引i-67的元素。我有我相信這個問題是檢查是否索引包含任何如何檢查Arraylist索引是否爲空

for(int i = 0; i <= s.size()-1; i++){ 
    if(s.get(i) == null && i >= 67) 
     w.println(s.get(i-67)); 
    } 

我看其他地方,也許一個哈希表是這樣做的更好,但我爲我的生活不能明白爲什麼。

+0

運行時錯誤,編譯器錯誤,數據輸出錯誤,請指定。 – Murillio4

+1

'我<= s.size() - 1;'真的嗎? – FredK

+0

對不起,錯誤的數據輸出是我的問題,因爲它不會識別索引是否爲空。 @FredK是的它呢? 反正我找到了我的問題的解決方案,顯然我使用了錯誤的數據結構的問題。此外,如果有人在意知道它不會提取的原因,因爲字符串不是原始數據類型,所以如果(s.get(i).equals(null)) 需要執行 以獲得正確結果!感謝大家! – Tdlk

回答

0

使用if(s.get(i) == null)不起作用,並且方法get()引發異常而不是返回null。

您需要捕獲異常,使用此:

try { 
    s.get(i); 
} catch (IndexOutOfBoundsException e) { 
    s.add(i, new Object());//Add something to fill this position. 
} 

如果i位置ArrayList中爲空(空),該代碼捕獲異常,你可以添加東西來填補這個位置。你沒有指定你的Arraylist是什麼類型。