-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+()これが次のようになっている場合はメソッドの名前を検索しますthis:methodname(){..。

これを行うには、keresesifeltetel 3の次の行が必要ですが、正しく機能させることができません。何も検出されないか、エラーがドロップされます。現在、入力ファイルの要素を約15回書き出すので、そうする必要があります。keresesifeltetel3でエラーが表示され、次のようになります。

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

1 に答える 1

0

あなたの問題はここにあると思います: sorokPlusz1[id]. idの範囲に及ばないようですsorokPlusz1。私はあなたが使用jjしたいと考えており、それは's の代わりに' s の範囲にjjまたがるべきであり、そうあるべきです。sorokPlusz1soroksorok[jj].startsWith("(")sorokPlusz1[jj].startsWith("(")

しかし、あなたが何をしようとしているのか、listaZ と listaIdeig がどのように見えるのか 100% 確信が持てないので、私は主に憶測であることに注意してください。

soroksize =の 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) がどのように見えるのか、まだほとんどわかりません。

英語以外の変数名を使用すると、英語を話す人にとって助けが難しくなります。soroktoarraykeresesiFeltetelXtoを変更したbX方が良いでしょう (それでも素晴らしいとは言えませんが)。理解できない長い変数名を使用すると、読みにくくなります。

コードにコメントしてください。(ほぼすべての行に) 十分なコメントがあると、コードを理解しやすくなります。

例。やりたいことを (英語で) 適切に説明するのが難しい場合は、説明に大いに役立ついくつかの例をいつでも提供できます (これを行うことは、一般的には良い考えです)。良い例は、入力と目的の出力 (および該当する場合は実際の出力) の両方を提供することに注意してください。

于 2012-11-28T11:44:53.577 に答える