如何检查数组元素是否为null以避免Java中的NullPointerException

我有一个部分nfilled对象数组,当我遍历它们时,我试图检查所选对象是否为null之前我用它做其他的东西。 但是,即使是通过NullPointerException检查它是否为null的行为。 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 [index]的长度?

它不是。

见下文。 您发布的程序按预期运行。

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

如果你想找到一个特定的null元素,你应该使用for循环,如上所述。

给定的代码适合我。 请注意,someArray [i]始终为null,因为您尚未初始化数组的第二个维度。

好吧,首先代码不能编译。

在i ++之后删除了额外的分号后,它编译并运行正常。

示例代码不会抛出NPE。 (也不应该是i ++背后的’;’)

争论代码是否正在编译我会说创建一个包含sixe 5的数组并添加2个值并打印它们,您将得到两个值,其他值为null。 问题是虽然大小为5但arrays中有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);