Java 在for循环中迭代Arraylist时获取IndexOutOfBoundException
我在使用For循环迭代Arraylist时获得java.lang.IndexOutOfBoundsException。我知道为什么会出现这个异常,但我不知道解决这个问题的方法 我必须根据Arraylist中的值来划分字符串。为此,我使用了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的
子字符串(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));
blurbcount.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++) {