2017-10-16 88 views
-5

我有一個問題,這個代碼異常線程 「main」 java.lang.IndexOutOfBoundsException:指數:6,大小:6

List<String> listaTags = new ArrayList<String>(); 





    int i = 0; 
    String current = listaTags.get(i); 

    while (listaTags.size() > 1 && listaTags.contains("/".concat(current)) != current.contains("/")) { 

     if (current.equals(listaTags.get(i + 1))) { 

      listaTags.remove(current); 
      listaTags.remove(listaTags.get(i + 1)); 

      if (i < 0) { 
       i++; 
      } 
     } 

     i++; 

    } 

    System.out.println("errore nel codice"); 

} 

listatags有六個要素

的錯誤是:

異常線程 「main」 java.lang.IndexOutOfBoundsException: 指數:6,大小:6

有人可以幫我嗎?

+0

的'如果(I <0)'語句可以被刪除 - 沒有辦法,我可以小於零。您的IndexOutOfBoundsException可能發生在循環中的幾個循環之後 - 值的電流永遠不會改變,因此循環將永遠持續(您可能希望在while循環內有'String current =' – Stefan

+0

列表中的索引是從零開始的,所以如果列表有6個項目,那麼有效索引值是0到5(含); 6是無效索引 – Jesper

+0

如果列表有6個元素,那麼這些元素的索引從0到5。 – mlecz

回答

0

此行

if (current.equals(listaTags.get(i + 1))) 

是因爲在拋出異常「而」每次列表大小大於1,你的i值達到比列表的尺寸更大的價值。

0

由於列表的大小爲6,所以指數是0,1,2,3,4,5(這是在這種情況下,我的價值)

你總是通過增加i的值1,當它是i = 5時,它拋出IndexOutOfBoundsException。

作爲一個修復你可以做

if (i < 5 && current.equals(listaTags.get(i + 1))) {...} 
相關問題