2014-11-04 78 views
-2

我在我的节目以下异常:异常线程 “main” java.lang.IndexOutOfBoundsException:指标:1,尺寸:1

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 
    at java.util.ArrayList.rangeCheck(Unknown Source) 
    at java.util.ArrayList.get(Unknown Source) 
    at id.co.ptap.text.ParseText.main(ParseText.java:370) 

这是相关代码:

 x = first+";"+allHeader.get(count) + strBody + "\n"; //line 370 
     bw.write(x); 
     System.out.println(x); 

      if (ketemu) {     
       count++; 
       ketemu = false; 
      } 
+0

'allHeader'尺寸小于从'count'。 – iMBMT 2014-11-04 04:30:28

+0

你已经发布了相同的问题:http://stackoverflow.com/questions/26707733/java-lang-indexoutofboundsexception-index-1-size-1 – 2014-11-04 04:31:41

+0

我选择关闭另一个作为这个副本,因为这一个有答案,至少在某种程度上是一种改进,并且我已经选择关闭这个*作为一个容易找到的关于总体主题的现有问题的副本。 – 2014-11-04 04:41:21

回答

2

那么,根据错误allHeader是一个ArrayList与单个项目,并且count == 1allHeader.get(count)接受的最大索引为allHeader.size() - 1

1

allHeader.get(count)

会给你这个异常计数

校验值。

因为您正试图访问值没有匹配的索引号为ArrayList您必须从ArrayList访问值小于ArrayList的大小。 (即计值应小于大小的ArrayList)

count < ArrayList.size()

1

ArrayList的指标在0开始,上升到size() - 1。因此,如果您有1件商品,它位于索引0,而不是1。更改以下行:

**x = first+";"+allHeader.get(count-1) + strBody + "\n";** //line 370 

这将让ArrayList中的最后一个项目,假设count等于allHeader.size()

+0

我已经尝试,但这个异常:线程“主”java.lang.ArrayIndexOutOfBoundsException异常:-1 在java.util.ArrayList.elementData(未知源) 在java.util.ArrayList.get(未知源) 在id.co.ptap.text.ParseText.main(ParseText.java:370) – 2014-11-04 07:21:20

+0

'count'等于'allHeader.size()'?使用上面的代码,在'-1'处得到IndexOutOfBounds的唯一方法是如果count为'0',这意味着ArrayList中没有项目。 – Shadow 2014-11-04 11:09:02

相关问题