Question

J'ai un tableau d’objets partiellement rempli, et lorsque j’ai parcouru ces sites, j’ai essayé de vérifier si l’objet sélectionné était null avant d’en faire d’autres choses. Cependant, même l'acte de vérifier s'il est null semble se faire via une NullPointerException . array.length inclura également tous les éléments null . Comment allez-vous vérifier les éléments null dans un tableau? Par exemple, dans le code suivant, jettera un NPE pour moi.

Object[][] someArray = new Object[5][];
for (int i=0; i<=someArray.length-1; i++) {
    if (someArray[i]!=null) { //do something
    } 
}
Était-ce utile?

La solution

Vous en avez plus que ce que vous avez dit. J'ai exécuté le test développé suivant à partir de votre exemple:

public class test {

    public static void main(String[] args) {
        Object[][] someArray = new Object[5][];
        someArray[0] = new Object[10];
        someArray[1] = null;
        someArray[2] = new Object[1];
        someArray[3] = null;
        someArray[4] = new Object[5];

        for (int i=0; i<=someArray.length-1; i++) {
            if (someArray[i] != null) {
                System.out.println("not null");
            } else {
                System.out.println("null");
            }
        }
    }
}

et j'ai obtenu le résultat attendu:

$ /cygdrive/c/Program\ Files/Java/jdk1.6.0_03/bin/java -cp . test
not null
null
not null
null
not null

Essayez-vous éventuellement de vérifier la longueur de someArray [index]?

Autres conseils

Ce n'est pas le cas.

Voir ci-dessous. Le programme que vous avez publié fonctionne comme supposé.

C:\oreyes\samples\java\arrays>type ArrayNullTest.java
public class ArrayNullTest {
    public static void main( String [] args ) {
        Object[][] someArray = new Object[5][];
            for (int i=0; i<=someArray.length-1; i++) {
                 if (someArray[i]!=null ) {
                     System.out.println("It wasn't null");
                 } else {
                     System.out.printf("Element at %d was null \n", i );
                 }
             }
     }
}


C:\oreyes\samples\java\arrays>javac ArrayNullTest.java

C:\oreyes\samples\java\arrays>java ArrayNullTest
Element at 0 was null
Element at 1 was null
Element at 2 was null
Element at 3 was null
Element at 4 was null

C:\oreyes\samples\java\arrays>
String labels[] = { "MH", null, "AP", "KL", "CH", "MP", "GJ", "OR" }; 

if(Arrays.toString(labels).indexOf("null") > -1)  {
    System.out.println("Array Element Must not be null");
                     (or)
    throw new Exception("Array Element Must not be null");
}        
------------------------------------------------------------------------------------------         

For two Dimensional array

String labels2[][] = {{ "MH", null, "AP", "KL", "CH", "MP", "GJ", "OR" },{ "MH", "FG", "AP", "KL", "CH", "MP", "GJ", "OR" };    

if(Arrays.deepToString(labels2).indexOf("null") > -1)  {
    System.out.println("Array Element Must not be null");
                 (or)
    throw new Exception("Array Element Must not be null");
}    
------------------------------------------------------------------------------------------

same for Object Array    

String ObjectArray[][] = {{ "MH", null, "AP", "KL", "CH", "MP", "GJ", "OR" },{ "MH", "FG", "AP", "KL", "CH", "MP", "GJ", "OR" };    

if(Arrays.deepToString(ObjectArray).indexOf("null") > -1)  {
    System.out.println("Array Element Must not be null");
              (or)
    throw new Exception("Array Element Must not be null");
  }

Si vous souhaitez rechercher un élément null particulier, vous devez utiliser la boucle for comme indiqué ci-dessus.

Le code donné fonctionne pour moi. Notez que someArray [i] est toujours nul puisque vous n’avez pas initialisé la deuxième dimension du tableau.

Eh bien, tout d’abord, ce code ne compile pas.

Après avoir supprimé le point-virgule supplémentaire après i ++, il compile et fonctionne correctement pour moi.

L'exemple de code ne renvoie pas de NPE. (il ne devrait pas y avoir non plus de ';' derrière le i ++)

Que le code soit compilé ou non, je vous dirais de créer un tableau de six 5 ajoutant 2 valeurs et de les imprimer, vous obtiendrez les deux valeurs et les autres valeurs sont nulles. La question est bien que la taille soit 5 mais il y a 2 objets dans le tableau. Comment trouver combien d'objets sont présents dans le tableau

public static void main(String s[])
{
    int firstArray[] = {2, 14, 6, 82, 22};
    int secondArray[] = {3, 16, 12, 14, 48, 96};
    int number = getCommonMinimumNumber(firstArray, secondArray);
    System.out.println("The number is " + number);

}
public static int getCommonMinimumNumber(int firstSeries[], int secondSeries[])
{
    Integer result =0;
    if ( firstSeries.length !=0 && secondSeries.length !=0 )
    {
        series(firstSeries);
        series(secondSeries);
        one : for (int i = 0 ; i < firstSeries.length; i++)
        {
            for (int j = 0; j < secondSeries.length; j++)
                if ( firstSeries[i] ==secondSeries[j])
                {
                    result =firstSeries[i];
                    break one;
                }
                else
                    result = -999;
        }
    }
    else if ( firstSeries == Null || secondSeries == null)
        result =-999;

    else
        result = -999;

    return result;
}

public static int[] series(int number[])
{

    int temp;
    boolean fixed = false;
    while(fixed == false)
    {
        fixed = true;
        for ( int i =0 ; i < number.length-1; i++)
        {
            if ( number[i] > number[i+1])
            {
                temp = number[i+1];
                number[i+1] = number[i];
                number[i] = temp;
                fixed = false;
            }
        }
    }
    /*for ( int i =0 ;i< number.length;i++)
    System.out.print(number[i]+",");*/
    return number;

}

Vous pouvez le faire sur une ligne de code (sans déclaration de tableau):

object[] someArray = new object[] 
{
    "aaaa",
    3,
    null
};
bool containsSomeNull = someArray.Any(x => x == null);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top