-1

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

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
4

1 回答 1

0

我认为你的问题在这里:sorokPlusz1[id]id似乎没有跨越sorokPlusz1的范围。我怀疑你想使用jj并且jj应该跨越sorokPlusz1's 范围而不是sorok's 并且sorok[jj].startsWith("(")应该是sorokPlusz1[jj].startsWith("(")

但请注意,我主要是在推测,因为我不是 100% 确定您要做什么或 listaZ 和 listaIdeig 是什么样子。

您正在sorok使用 size =listaZ的大小进行创建,然后执行以下操作:sorok = listaZ.get(i);. 这显然是不对的。不知道 listaZ 的确切类型很难告诉您它有什么问题。如果是ArrayList<String[]>,则更 String[] sorok = new String[listaZ.size()];改为String[] sorok = null;String[] sorok;。如果是这样,ArrayList<String>那么您可能想做更多类似的事情sorok[i] = listaZ.get(i);

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

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

使用非英语变量名会使任何说英语的人更难提供帮助。即使更改sorokarraykeresesiFeltetelX更改bX会更好(尽管仍然不是很好)。具有难以理解的长变量名称使其更难以阅读。

评论你的代码。足够多的注释(几乎在每一行)使您更容易理解您的代码。

例子。如果你很难正确解释你想做的事情(用英语),你总是可以提供一些例子来帮助你解释(总的来说,这样做是个好主意)。请注意,一个很好的示例是同时提供输入和所需的输出(以及实际输出,如果适用)。

于 2012-11-28T11:44:53.577 回答