我将在文本文档中解析pdf文件,以稍后创建JSON数组。
我正在尝试处理一个arrayList,以在发生这种情况时向其中添加类似marker
的内容(出现错误的情况下,这种情况仍然没有发生)。循环运行21次,直到发生错误。在这种情况下,在错误发生之前就输入了与prevElement
字符串相等的direction
字符串,所以我不明白为什么会出现此错误,因为该错误已经在与alle变量匹配之前输入了。bufferDirection
有130个字符串。
我该如何解决?
感谢您的帮助。
第一次输入if(prevElement.equals(direction))
错误出现之前的第二次:
错误出现之前direcArray的内容:
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");
}
}
}
最佳答案
问题是
direcArray.add(i + 1, addElem);
您尝试将
addElem
添加到索引i + 1
但是
direcArray
的大小小于bufferDirection
,并且那时<= i
中有direcArray
个元素可能,您只想要:
direcArray.add(addElem);
同样,这里也会发生同样的问题
direcArray.add(i - 1, "New direction");
您需要像这样将其更改为smt:
direcArray.add(direcArray.size() - 2, "New direction");