2010-11-22 4 views
2

je continue à recevoir un NullPointerException tout en essayant d'obtenir une chaîne de tout tableau (qui est encapsulé dans un vecteur). Je n'arrive pas à arrêter l'erreur. Cela doit être quelque chose de simple, mais je pense que je l'ai regardé trop longtemps et que je pourrais utiliser un autre ensemble d'yeux. Voici mon code:Aide avec tableau java NullPointerException

Vector<Event> details = vector.get(i).getEvent(); 

for (int x = 0; x < details.size(); x++) { 
     Event eDetails = details.get(x); 

     person = eDetails.getEventPerson(); 
     place = eDetails.getEventPlace()[0]; 
     time = eDetails.getEventTime()[0]; 

} 

Alors, quand je tente d'obtenir l'élément à la position 0 dans le tableau (lorsque x est 0) qui est renvoyée par eDetails.getEventTime, NullPointerException est levée. Maintenant, quand x vaut 0, je sais que l'élément de tableau à la position 0 du tableau getEventTime() est une chaîne vide, mais ce n'est pas une valeur nulle. Quand x est 1 ou 2, etc. Je peux récupérer le temps juste très bien.

Le problème est que je vais encore recevoir le NullPointerException lorsque je tente de faire des choses comme ce qui suit:

**System.out.println(eDetails.getEventTime.length);** 

or 

String result; 

**if(eDetails.getEventTime[0] == null){** 
     result = ""; 
} else { 
     result = eDetails.getEventTime[0]; 
} 

Toutes les idées?

Merci!

+1

Je suppose que vous voulez dire 'getEventTime() [0]' dans votre deuxième bloc de code? En outre, vous ne montrez pas vraiment comment vous peuplez vos objets. – Jeremy

+0

@Jeremy Cela devrait être 'getEventTime() [0]' car 'getEventTime [0]' ne serait pas compilé (une méthode n'est pas un tableau). – extraneon

+0

@extraneon - Je le sais, et c'est pourquoi j'ai supposé. J'essayais juste de clarifier avec le PO. Mais que se passerait-il si l'OP avait une variable d'instance publique 'getEventTime', mais peu probable? – Jeremy

Répondre

2

Etes-vous sûr dans votre deuxième exemple, il ne doit pas être:

if(eDetails.getEventTime() == null)

Au lieu de:

if(eDetails.getEventTime[0] == null)

vous assurez vous laissez le [0] vous lorsque vous faire le contrôle nul?

Si la fonction eDetails.getEventTime() retours null, vous obtiendrez un NullPointerException lorsque vous essayez de faire eDetails.getEventTime()[0];

1

Semble que lorsque vous obtenez details.get(0).getEventTime() le tableau retourné est nul.

+0

Peut également être 'details.get (0) .getEventPlace()' qui renvoie null, car cela renvoie également un tableau (ou null). – extraneon

0

La façon la plus simple de comprendre cela est:

Vector<Event> details = vector.get(i).getEvent(); 

for (int x = 0; x < details.size(); x++) { 
     Event eDetails = details.get(x); 
     if (eDetails == null) { 
      throw new NullPointerException("eDetails on pos " + x + " is null"); 
     } 

     person = eDetails.getEventPerson(); 
     Something[] places = Details.getEventPlace(); 
     if (places == null) { 
      throw .... 
     } 
     place = eDetails.getEventPlace()[0]; 

     Something[] times = eDetails.getEventTime(); 
     if (times == null) { 
      throw .... 
     } 
     time = eDetails.getEventTime()[0]; 
} 

Il peut ne pas sembler agréable, mais au moins il est instructif.