“线程中的异常”;“主要”;java.lang.IndexOutOfBoundsException:索引:23,大小:22
我正在解析文本文档中的pdf文件,以便稍后创建JSON数组 我正在尝试处理一个arrayList,以便在出现这种情况时(如果出现错误,则说明该情况尚未发生)向其添加类似于“线程中的异常”;“主要”;java.lang.IndexOutOfBoundsException:索引:23,大小:22,java,Java,我正在解析文本文档中的pdf文件,以便稍后创建JSON数组 我正在尝试处理一个arrayList,以便在出现这种情况时(如果出现错误,则说明该情况尚未发生)向其添加类似于标记的内容。循环正在运行21次,直到出现错误。在这种情况下,等于方向字符串的preveElement字符串在错误发生之前被输入一次,因此我不理解为什么会出现此错误,因为它之前已经输入,并且所有变量都匹配 bufferDirection有130个字符串 我怎样才能修好它 谢谢你的帮助 第一次输入if(previdelement.e
标记的内容。循环正在运行21次,直到出现错误。在这种情况下,等于方向
字符串的preveElement
字符串在错误发生之前被输入一次,因此我不理解为什么会出现此错误,因为它之前已经输入,并且所有变量都匹配
bufferDirection
有130个字符串
我怎样才能修好它
谢谢你的帮助
第一次输入if(previdelement.equals(direction))时
出现错误前的第二次:
ArrayList<String> direcArray = new ArrayList<String>();
boolean dontAdd = true;
for (int i = 0; i < bufferDirection.size(); i++) {
String bufferLine2 = bufferDirection.get(i);
if (bufferLine2.equals(route)) {
direcArray.add(bufferLine2);
String prevElement = bufferDirection.get(i - 1);
if (prevElement.equals(direction)) {
String addElem = bufferDirection.get(i + 1);
direcArray.add(i + 1, addElem);
} else if (!(prevElement.equals(start))) {
if (dontAdd) {
dontAdd = false;
// direcArray.add(i - 1, " ");
direcArray.add(i - 1, "New direction");
}
}
}
出现错误之前目录数组的内容:
ArrayList<String> direcArray = new ArrayList<String>();
boolean dontAdd = true;
for (int i = 0; i < bufferDirection.size(); i++) {
String bufferLine2 = bufferDirection.get(i);
if (bufferLine2.equals(route)) {
direcArray.add(bufferLine2);
String prevElement = bufferDirection.get(i - 1);
if (prevElement.equals(direction)) {
String addElem = bufferDirection.get(i + 1);
direcArray.add(i + 1, addElem);
} else if (!(prevElement.equals(start))) {
if (dontAdd) {
dontAdd = false;
// direcArray.add(i - 1, " ");
direcArray.add(i - 1, "New direction");
}
}
}
ArrayList direcArray=new ArrayList();
布尔dontAdd=true;
对于(int i=0;i
将循环的上限更改为
i < bufferDirection.size() - 1
i
在循环中,您正在访问元素i+1
,该元素将引发异常;i
本身将到达数组的最后一个索引,因此i+1将使其超出范围。将循环的上限更改为on
i < bufferDirection.size() - 1
i
在循环中,您正在访问元素i+1
,该元素将引发异常;i
本身将到达数组的最后一个索引,因此i+1将使其超出范围。将循环的上限更改为on
i < bufferDirection.size() - 1
i
在循环中,您正在访问元素i+1
,该元素将引发异常;i
本身将到达数组的最后一个索引,因此i+1将使其超出范围。将循环的上限更改为on
i < bufferDirection.size() - 1
i
在循环中,您正在访问元素i+1
,该元素将引发异常;i
本身将到达数组的最后一个索引,因此i+1将使其超出范围。问题是
direcArray.add(i + 1, addElem);
您尝试将addElem
添加到索引i+1
但是direcArray
的大小小于bufferDirection
,并且当时存在问题
direcArray.add(i + 1, addElem);
您尝试将addElem
添加到索引i+1
但是direcArray
的大小小于bufferDirection
,并且当时存在问题
direcArray.add(i + 1, addElem);
您尝试将addElem
添加到索引i+1
但是direcArray
的大小小于bufferDirection
,并且当时存在问题
direcArray.add(i + 1, addElem);
您尝试将addElem
添加到索引i+1
但是direcArray
的大小小于bufferDirection
,此时存在问题是您在23号位置而不是22号位置添加。使用额外的索引j保留数组列表中的下一个位置。问题是您在23号位置而不是22号位置添加。使用额外的索引j保留t中的下一个位置他是arraylist。问题是你在23号位置而不是22号位置添加。使用额外的索引j来保持arraylist中的下一个位置。问题是你在23号位置而不是22号位置添加。使用额外的索引j来保持arraylist中的下一个位置。问题是你试图将一个元素添加到一个它不在的位置在directArray
中:
添加新元素时,您要添加2倍的值,一倍在循环中,一倍在行中。此行:
direcArray.add(i + 1, addElem);
应该是:
direcArray.add(i, addElem);
我希望这对你有帮助
编辑:您应该在出现问题的行中设置一个条件来解决此问题:
if(i + 1 >= bufferDirection.size())
{
direcArray.add(i, addElem);
}
else
{
direcArray.add(i + 1, addElem);
}
问题在于,您试图将一个元素添加到一个不在directArray
中的位置:
添加新元素时,您要添加2倍的值,一倍在循环中,一倍在行中。此行:
direcArray.add(i + 1, addElem);
应该是:
direcArray.add(i, addElem);
我希望这对你有帮助
编辑:您应该在出现问题的行中设置一个条件来解决此问题:
if(i + 1 >= bufferDirection.size())
{
direcArray.add(i, addElem);
}
else
{
direcArray.add(i + 1, addElem);
}
问题在于,您试图将一个元素添加到一个不在directArray
中的位置:
添加新元素时,您要添加2倍的值,一倍在循环中,一倍在行中。此行:
direcArray.add(i + 1, addElem);
应该是:
direcArray.add(i, addElem);
我希望这对你有帮助
编辑:您应该在出现问题的行中设置一个条件来解决此问题:
if(i + 1 >= bufferDirection.size())
{
direcArray.add(i, addElem);
}
else
{
direcArray.add(i + 1, addElem);
}
问题在于,您试图将一个元素添加到一个不在directArray
中的位置:
添加新元素时,您要添加2倍的值,一倍在循环中,一倍在行中。此行:
direcArray.add(i + 1, addElem);
应该是:
direcArray.add(i, addElem);
我希望这对你有帮助
编辑:您应该在出现问题的行中设置一个条件来解决此问题:
if(i + 1 >= bufferDirection.size())
{
direcArray.add(i, addElem);
}
else
{
direcArray.add(i + 1, addElem);
}
不相关,但打电话给某个人