Frage

Ich habe eine teilweise nfilled Array von Objekten, und wenn ich sie durchlaufen habe ich versucht, um zu prüfen, ob das ausgewählte Objekt null wird, bevor ich damit andere Sachen zu tun. Aber auch der Akt der Überprüfung, ob es null ist offenbar ein NullPointerException durch. array.length alle null Elemente als auch enthalten. Wie gehen Sie in einem Array für null Elemente überprüft? Zum Beispiel in dem folgenden Code wird eine NPE für mich werfen.

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

Lösung

Sie haben mehr los als Sie gesagt haben. Ich lief den folgenden erweiterten Test aus Ihrem Beispiel:

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

und bekam die erwartete Ausgabe:

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

Sind Sie möglicherweise versuchen, die Längen von EinArray [index] zu überprüfen?

Andere Tipps

Es ist nicht.

Siehe unten. Das Programm, das Sie geschrieben läuft wie angenommen.

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

Wenn Sie ein bestimmtes Nullelement finden wollen, sollten Sie sich für Schleife verwenden, wie oben gesagt.

Der angegebene Code funktioniert für mich. Beachten Sie, dass EinArray [i] ist immer null, da Sie die zweite Dimension des Arrays nicht initialisiert.

Nun, zunächst einmal, dass Code nicht kompiliert.

das zusätzliche Semikolon Nach dem Entfernen nach i ++ kompiliert es und läuft gut für mich.

Der Beispielcode keinen NPE werfen. (Es sollte auch nicht sein, ';' hinter dem i ++)

Kampf, ob der Code kompiliert oder nicht würde ich sagen, eine Reihe von sixe 5 add 2 Werte erstellen und ausdrucken, werden Sie die beiden Werte erhalten und andere sind null. Die Frage ist, obwohl die Größe 5 ist, aber es gibt 2-Objekte in der Anordnung. Wie finden Sie, wie viele Objekte in dem Array vorhanden sind

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;

}

Sie können es auf einer Zeile Code (ohne Array-Deklaration):

object[] someArray = new object[] 
{
    "aaaa",
    3,
    null
};
bool containsSomeNull = someArray.Any(x => x == null);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top