2017-10-19 8 views
-1

Voici un morceau de code que je suis en train de courir:java.lang.ArrayIndexOutOfBoundsException: 0 Même après avoir vérifié null

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; 
    } 
} 

Ce code est de lancer une erreur java.lang.ArrayIndexOutOfBoundsException: 0 comme indiqué ci-dessus extrait de code

+4

Même '' grid' n'est pas null', il peut être vide, ie, 'grid.length == 0'. Dans ce cas, 'grid [0]' lancera 'ArrayIndexOutOfBoundsException'. – Alex

+0

Ajouter la définition de – c0der

+1

visité Le problème est que lorsque 'grille' est vide, il n'y a rien de' grille [0] '. Vide et null ne sont pas la même chose. (En d'autres termes, Alex a raison, mais tape plus vite que moi, Dave vous a donné un hareng rouge). –

Répondre

0

Le tableau de longueur 0 n'a pas besoin d'être nul.

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

La sortie est false.

0

Il pourrait y avoir 2 numéros dans votre code

  • On dirait grille [0] est nulle. Mettez un chèque pour la grille [0].
  • grille
  • peut être de longueur 0, donc quand vous grille accédez à [0] il jette ArrayIndexOutOfBoundsException