Java 在for循环中迭代Arraylist时获取IndexOutOfBoundException

Java 在for循环中迭代Arraylist时获取IndexOutOfBoundException,java,arraylist,indexoutofboundsexception,Java,Arraylist,Indexoutofboundsexception,我在使用For循环迭代Arraylist时获得java.lang.IndexOutOfBoundsException。我知道为什么会出现这个异常,但我不知道解决这个问题的方法 我必须根据Arraylist中的值来划分字符串。为此,我使用了子字符串(int startingIndex,int endingIndex)方法 我在这方面遇到了例外 String subString = queryString.substring(count.get(i),count.get(i+1)); i的

我在使用For循环迭代Arraylist时获得java.lang.IndexOutOfBoundsException。我知道为什么会出现这个异常,但我不知道解决这个问题的方法

我必须根据Arraylist中的值来划分字符串。为此,我使用了
子字符串(int startingIndex,int endingIndex)
方法

我在这方面遇到了例外

    String subString = queryString.substring(count.get(i),count.get(i+1));
i
的值超出了列表的大小

代码:

String queryString=request.getQueryString();
模式p1=Pattern.compile(“check=on”);
匹配器m1=p1.匹配器(查询字符串);
ArrayList计数=新建ArrayList();
而(m1.find())
{
count.add(m1.start());
}
//迭代数组列表
对于(int i=0;i

我希望您能理解我的问题。

您将从
I=0
变为
I=count.size()-1
-即数组的大小

但是,

for (int i = 0; i < count.size() ; i++) {
    String subString = queryString.substring(count.get(i),count.get(i+1));
    out.println("subString:"+ subString);
  }
for(int i=0;i
这使用了
i+1
,这意味着在最后一个循环中,它会变得太高,给您带来越界错误。

String subString = queryString.substring(count.get(i),count.get(i+1));
blurb
count.get(i+1)
将尝试获取超过
ArrayList
末尾的数据,因为
i
最终将等于最后一个元素索引。您可能希望将for循环更改为

`...; i < count.size()-1 ;...`
`。。。;i

干杯,

看起来您希望始终查询相邻的配对

在这种情况下,您需要一直运行到列表末尾之前的一个元素,而不是实际末尾(意思是直到
count.size()-1
):

for(int i=0;i
在这一行
String subString=queryString.subString(count.get(i),count.get(i+1))
如果
i=cont.size()-1
因为
count.get(i+1)
将是
count.size()
,那么您将获得一个
arrayindexoutofbounds异常

您必须在count.size()-1处停止:

for (int i = 0; i < count.size() -1 ; i++) {
    String subString = queryString.substring(count.get(i),count.get(i+1));
    out.println("subString:"+ subString);
} 
for (int i = 0; i < count.size()-1 ; i++) {
for(int i=0;i
将(int i=0;ifor (int i = 0; i < count.size()-1 ; i++) {