كيفية معرفة ما إذا كان عنصر مجموعة باطل لتجنب NullPointerException في جاوة

StackOverflow https://stackoverflow.com/questions/425439

سؤال

ولدي مجموعة nfilled جزئيا من الكائنات، وعندما أعاد من خلالها حاولت أن تحقق لمعرفة ما إذا كان null الكائن المحدد قبل أن أفعل أشياء أخرى معها. ومع ذلك، وحتى العمل للتحقق إذا كان null يبدو من خلال NullPointerException. وسوف تشمل جميع العناصر array.length null كذلك. كيف يمكنك أن تذهب نحو التحقق من وجود عناصر null في مجموعة؟ على سبيل المثال في التعليمة البرمجية التالية سوف رمي NPE بالنسبة لي.

Object[][] someArray = new Object[5][];
for (int i=0; i<=someArray.length-1; i++) {
    if (someArray[i]!=null) { //do something
    } 
}
هل كانت مفيدة؟

المحلول

ولقد أكثر يدور من قال لك. ركضت اختبار موسع التالية من المثال الخاص بك:

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

وحصل على الناتج المتوقع:

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

هل ربما في محاولة للتحقق من أطوال someArray [المؤشر]؟

نصائح أخرى

وولا.

وانظر أدناه. البرنامج الذي شارك يدير كما يفترض.

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

إذا كنت ترغب في العثور على عنصر معين لاغية، يجب عليك استخدام للحلقة كما ذكر أعلاه.

وكود معين يعمل بالنسبة لي. لاحظ أن someArray [أنا] لاغيا دائما منذ كنت لم تهيئة البعد الثاني للمجموعة.

حسنا، أولا وقبل كل هذا الرمز لا ترجمة.

وبعد إزالة منقوطة إضافية بعد ط ++، فإنه يجمع ويعمل بشكل جيد بالنسبة لي.

ورمز المثال لا بطرح NPE. (أيضا لا ينبغي أن يكون هناك '؛' وراء ط ++)

والقتال سواء رمز بتجميع أو لا أود أن أقول إنشاء مجموعة من sixe 5 إضافة 2 القيم وطباعتها، سوف تحصل القيمتين والبعض الآخر لاغيا. والسؤال هو على الرغم من أن حجم 5 ولكن هناك 2 الكائنات في مجموعة. كيفية العثور على عدد الكائنات الموجودة في مجموعة

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;

}

ويمكنك القيام بذلك على سطر واحد من التعليمات البرمجية (بدون إعلان مجموعة):

object[] someArray = new object[] 
{
    "aaaa",
    3,
    null
};
bool containsSomeNull = someArray.Any(x => x == null);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top