我将在文本文档中解析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");

09-26 23:22