2017-10-16 114 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))) {...} 
相关问题