2017-03-20 7 views
0
public class number_of_islands { 
    public static void main(String[] args) { 
     number_of_islands tester = new number_of_islands(); 
     char[][] testData = {{'1', '1', '1', '1', '0'}, 
          {'1', '1', '0', '1', '0'}, 
          {'1', '1', '0', '0', '0'}, 
          {'0', '0', '0', '0', '0'}}; 
     System.out.println(tester.numIslands(testData)); 
    } 

    public int numIslands (char[][] grid) { 
     if (grid == null || grid.length == 0) { 
      throw new IllegalArgumentException("Invalid argument"); 
     } 

     int res = 0; 
     for (int i = 0; i < grid.length; i++) { 
      for (int j = 0; i < grid[i].length; j++) { 
       if ((grid[i][j] == '0') 
        /* the line below is where the above error occurs */ 
        ||((i > 0) && (grid[i - 1][j] == '1')) 
        || ((j > 0) && (grid[i][j - 1] == '1'))) { 
        continue; 
       } 
       res++; 
      } 
     } 
     return res; 
    } 
} 

上記のコードでは、numIslands関数は2-d配列を入力として受け取り、何かを計算しますが、コメントの下の行に配列外のエラーがあります。とj> 0、なぜまだそこに質問?なぜこのプログラムを実行しようとすると(java.lang.ArrayIndexOutOfBoundsException:5)例外がありますか?

ありがとうございます!

+2

た作りi RealSkeptic

+0

ありがとう、私はそれを実現します。 –

答えて

0

ちょうどあなたの内側のループであなたは `について尋ねているので、ループループための第二で

for (int i = 0; i < grid.length; i++) { 
     for (int j = 0; j < grid[i].length; j++) { 
... 

あなたの状態のため、これらの小さな変化は、「<グリッド[i]は.LENGTH i」の

+0

うわー、そんなに愚かな間違い、ありがとうたくさん –

+0

はい、そうです。このような単純なエラーが発生した場合は、Eclipseや他のIDEを使用してコードをデバッグする必要があります。また、他の回答にコメントするための十分なポイントを与えるので、私はあなたのコメントとupvote場合は感謝します。 :)ありがとう。 –

関連する問題