2016-02-13 113 views
-2
for (int i = 0; i < totalArray.size(); i++){ 

     studentNumber.add(Long.parseLong(totalArray.get(i * 3))) 
     lastName.add(totalArray.get((i * 3) + 1)); 
     firstName.add(totalArray.get((i * 3) + 2)); 

我不確定這裏發生了什麼。我在這段代碼中遇到了索引超出範圍的錯誤。 totalArray.size()是42但是我得到了第二行(parseLong)在索引42處的錯誤。索引超出界限錯誤ArrayList

+1

自索引從0開始,最大索引大小爲1。 –

回答

0

正如cricket_007指出的,在你的for語句的第14次迭代中,我是14,你的第二行試圖訪問你的索引的元素42(數組的最後一個元素被作爲元素41訪問,因爲它的索引爲0 )。

要在適當的地方停止for語句,只需在最後一行代碼中執行相反的操作。 (由Benjamin Lowry指出)。

0

您在studentNumber.add(Long.parseLong(totalArray.get(i * 3)))行中將您的i乘以3,所以當i> = 14時,它會超出範圍。

嘗試將其設置爲studentNumber.add(Long.parseLong(totalArray.get(i)))並運行它。您可能想將您的* 3置於第一個括號之外,但我無法扣除您的邏輯。

0

i是14時,您將獲得索引42與i * 3。對於大小爲42的列表來說,這是超出界限的。

0

您的第三行將數字加倍。這意味着如果我是30(當前設置可能),那麼當三倍時,將等於90,這顯然高於你的最大尺寸。

你需要做的

for (int i = 0; i < (totalArray.size() - 2)/3 ; i++) 

爲了使您的代碼工作。否則,你的三條線都會超過最大值。