从ArrayList的下一行中查找字符串

时间:2012-11-11 22:52:43

标签: java search arraylist

我有这段代码,它应该在所选文件中找到一个已知方法的名称:

String[] sorok = new String[listaZ.size()];
String[] sorokPlusz1 = new String[listaIdeig.size()];
boolean keresesiFeltetel1;
boolean keresesiFeltetel3;  
boolean keresesiFeltetel4;
int ind=0;

for (int i = 0; i < listaZ.size(); i++) {
    for (int id = 0; id < listaIdeig.size(); id++) {
        sorok = listaZ.get(i);
        sorokPlusz1 = listaIdeig.get(id);

        for (int j = 0; j < sorok.length; j++) {
            for (int jj = 1; jj < sorok.length; jj++) {

                keresesiFeltetel3 = (sorok[j].equals(oldName)) && (sorokPlusz1[id].startsWith("("));

                keresesiFeltetel4 = sorok[j].startsWith(oldNameV3);
                keresesiFeltetel1 = sorok[j].equals(oldName) && sorok[jj].startsWith("(");

                if (keresesiFeltetel1 || keresesiFeltetel3 || keresesiFeltetel4) {
                    Array.set(sorok, j, newName);
                    listaZarojeles.set(i, sorok);
                }
            }
         System.out.println(ind +". index, element: " +sorok[j]);
        }
        ind++;
    }
}

listaZ是一个ArrayList,元素由'('和''表示,listaIdeig是这个列表,没有第一行(因为keresesifeltetel3) oldNameV3是:oldName +() 如果这看起来像这样,我想找一个方法的名字: 方法名 (){...

要做到这一点,我需要keresesifeltetel 3中的下一行,但我无法使其正常工作。它找不到任何东西或丢失错误。 现在它写出输入文件的元素大约15次,然后它应该;并在keresesifeltetel3上显示错误,并且:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0

1 个答案:

答案 0 :(得分:0)

我认为您的问题出在此处:sorokPlusz1[id]id似乎不在sorokPlusz1的范围内。我怀疑您要使用jj,而jj应该跨越sorokPlusz1的范围,而不是soroksorok[jj].startsWith("(") sorokPlusz1[jj].startsWith("(")应该是sorok

但请注意,我在很大程度上推测,因为我不能100%确定你要做的事情或者listaZ和listaIdeig的样子。

您正在创建尺寸为listaZ的尺寸的sorok = listaZ.get(i);,然后执行此操作:ArrayList<String[]>。这显然是不对的。不知道listaZ的确切类型使得很难告诉你它有什么问题。如果它是String[] sorok = new String[listaZ.size()];,那么就改变 String[] sorok = null;String[] sorok;ArrayList<String>。如果是sorok[i] = listaZ.get(i);那么您可能想要做更像sorok

的事情

现在提供一些关于在这里提问的一般性说明:(重复评论中所说的内容)(本着帮助您成功获得本网站问题答案的精神)

您的问题通常不清楚。阅读完问题和代码后,我仍然不知道你要做什么以及输入变量(listaZ和listaIdeig)是什么样的。

使用非英语变量名称会使任何英语人士更难以提供帮助。即使将array更改为keresesiFeltetelXbX更改为{{1}}也会更好(尽管仍然不是很好)。拥有无法理解的长变量名称会使其更难阅读。

评论您的代码。足够的评论(几乎每行都有)使您更容易理解您的代码。

实施例。如果您难以正确解释您想要做什么(用英语),您可以随时提供一些示例,这些示例可以帮助您解释很多(这样做一般来说这是一个好主意)。请注意,一个很好的例子是提供输入和所需的输出(以及实际输出,如果适用)。