J'ai un tableau d'objets partiellement rempli, et lorsque je les parcourt, j'ai essayé de vérifier si l'objet sélectionné est null
avant de faire d'autres choses avec. Cependant, même l'acte de vérifier s'il s'agit de null
semble passer par un NullPointerException
. array.length
inclura également tous les éléments null
. Comment procédez-vous pour vérifier les éléments null
dans un tableau? Par exemple dans le code suivant lancera un NPE pour moi.
Object[][] someArray = new Object[5][];
for (int i=0; i<=someArray.length-1; i++) {
if (someArray[i]!=null) { //do something
}
}
Vous en avez plus que ce que vous avez dit. J'ai exécuté le test étendu 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 a obtenu la sortie attendue:
$ /cygdrive/c/Program\ Files/Java/jdk1.6.0_03/bin/Java -cp . test
not null
null
not null
null
not null
Essayez-vous de vérifier la longueur de someArray [index]?
Ce ne est pas.
Voir ci-dessous. Le programme que vous avez publié fonctionne comme prévu.
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 voulez trouver un élément null particulier, vous devez utiliser la boucle for comme indiqué ci-dessus.
Eh bien, tout d'abord, ce code ne se compile pas.
Après avoir supprimé le point-virgule supplémentaire après i ++, il se compile et fonctionne correctement pour moi.
L'exemple de code ne renvoie pas de NPE. (il ne devrait pas non plus y avoir de ';' derrière l'i ++)
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.
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 seule ligne de code (sans déclaration de tableau):
object[] someArray = new object[]
{
"aaaa",
3,
null
};
bool containsSomeNull = someArray.Any(x => x == null);
En combattant si le code est en train de compiler ou non, je dirais que créer un tableau de six 5 ajouter 2 valeurs et les imprimer, vous obtiendrez les deux valeurs et les autres sont nulles. La question est bien que la taille soit de 5 mais il y a 2 objets dans le tableau. Comment trouver le nombre d'objets présents dans le tableau