1

隣接行列でパスを見つけようとしていますが、常に次のエラー メッセージが表示されます。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
    at GraphApp.main(GraphApp.java:102)

これが私のコードです:

for (int i = 0; i < adjMat.length; i++)
    for (int j = 0; j < adjMat[i].length; j++)
        if (i < j)
            if (adjMat[i][j] == 1) //
                for (i = j + 1; i < adjMat.length; i++)
                    if (adjMat[i][j] == 1)
                        System.out.println("Graph conatains a path");
                    else
                        System.out.println("Graph doesn't contain a path");

たとえば、次のようなマトリックスがある場合:

0 1 1 1
1 0 1 0
1 1 0 0
1 0 0 0

たとえば、行列が対称であるため、もちろん最初のものを除いて、 1inT[0][1]に別の1inがあるかどうかを確認する必要があります。T[i][1]

4

1 に答える 1

4

iループで 2 回使用すると、ArrayIndexOutOfBoundsException が発生する可能性があります。正しい中括弧を使用すると、コードを簡単に読み、問題を見つけるのに役立ちます。

for (int i = 0; i < adjMat.length; i++) // first 
 ...
    ...
       for (i = j + 1; i < adjMat.length; i++)  // second
于 2013-04-23T17:46:56.437 に答える