2017-10-19 61 views
-1

这里后我试图运行的代码peice的:java.lang.ArrayIndexOutOfBoundsException:0偶检查空

public int numIslands(char[][] grid) { 
    if(grid==null) 
     return 0; 
    else 
    { 
     int count=0; 
     gridtemp=grid; // gridtemp is a global character array 
     visited=new boolean[grid.length][grid[0].length]; //****ERROR****** 
     for(int i=0;i<grid.length;i++) 
     { 
      for(int j=0;j<grid[0].length;j++) 
      { 
       if(IslandCount(i,j)>1) 
        count++; 
      } 
     } 
     System.out.println(count); 
     return count; 
    } 
} 

此代码抛出错误java.lang.ArrayIndexOutOfBoundsException:0如上所示代码片段

+4

即使'grid'不是'null',它可以是空的,即,'grid.length == 0'。在这种情况下,'grid [0]'会抛出'ArrayIndexOutOfBoundsException'。 – Alex

+0

添加访问的定义 – c0der

+1

问题是当'grid'为空时,没有'grid [0]'这样的事情。空和空不是一回事。 (换句话说,Alex是对的,但是键入的速度比我快,戴夫给了你一个红鲱鱼)。 –

回答

0

长度为0的数组不必为空。

@Test 
public void testArrayWithLengthZero(){ 
    int[] i = new int[0]; 
    System.out.println(i==null); 
} 

输出错误。

0

可能有2个问题在你的代码

  • 貌似电网[0]为空。检查网格[0]。
  • 网格可能是一个长度为0,因此,当要访问网格[0],它抛出ArrayIndexOutOfBoundsException异常
相关问题