solucion - Cómo comprobar si el elemento de matriz es nulo para evitar NullPointerException en Java
java.lang.nullpointerexception solucion (8)
Tengo una matriz parcialmente llena de objetos, y cuando los repito intenté verificar si el objeto seleccionado es null
antes de hacer otras cosas con él. Sin embargo, incluso el acto de comprobar si es null
parece a través de una NullPointerException
. array.length
también incluirá todos null
elementos null
. ¿Cómo se puede verificar elementos null
en una matriz? Por ejemplo, en el siguiente código arrojaré un NPE para mí.
Object[][] someArray = new Object[5][];
for (int i=0; i<=someArray.length-1; i++) {
if (someArray[i]!=null) { //do something
}
}
Bueno, primero que todo ese código no compila.
Después de eliminar el punto y coma adicional después de i ++, compila y funciona bien para mí.
El código dado funciona para mí. Observe que someArray [i] siempre es nulo, ya que no ha inicializado la segunda dimensión de la matriz.
El código de ejemplo no arroja un NPE. (tampoco debería haber un '';'' detrás de i ++)
No es asi.
Vea abajo. El programa que publica se ejecuta como se supone.
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>
Tienes más cosas de las que dijiste. Ejecuté la siguiente prueba ampliada de su ejemplo:
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");
}
}
}
}
y obtuvo el resultado esperado:
$ /cygdrive/c/Program/ Files/Java/jdk1.6.0_03/bin/java -cp . test
not null
null
not null
null
not null
¿Está posiblemente intentando verificar la longitud de algunos Array [índice]?
Luchando si el código se está compilando o no, yo diría que crear una matriz de sixe 5 add 2 values e imprimirlos, obtendrás los dos valores y los demás serán nulos. La pregunta es si el tamaño es 5 pero hay 2 objetos en la matriz. Cómo encontrar cuántos objetos están presentes en la matriz
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 desea encontrar un elemento nulo particular, debe usar for loop como se dijo anteriormente.
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;
}