2010-11-22 17 views
2

Ich empfange weiterhin eine NullPointerException beim Versuch, eine Zeichenfolge von einem Array (das in einem Vector gekapselt ist) zu erhalten. Ich kann den Fehler nicht verhindern. Es muss etwas Einfaches sein, aber ich denke, dass ich es zu lange angeschaut habe und ich könnte sicher ein anderes Paar Augen benutzen. Hier ist mein Code:Hilfe mit Java-Array 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]; 

} 

Also, wenn ich versuche, an der Position um das Element zu bekommen 0 im Array (wenn x 0), die von eDetails.getEventTime zurückgegeben wird, eine Nullpointer geworfen wird.

Nun, wenn x 0 ist, weiß ich, dass das Array-Element an der Position 0 des Array getEventTime() eine leere Zeichenfolge ist, aber es ist kein Nullwert. Wenn x 1 oder 2 usw. ist, kann ich die Zeit gut abrufen.

Das Problem ist, dass ich immer noch die Nullpointer erhalten, wenn ich versuche, Dinge zu tun wie folgt aus:

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

or 

String result; 

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

Irgendwelche Ideen?

Danke!

+1

Ich nehme an, Sie meinen 'getEventTime() [0]' in Ihrem zweiten Block des Codes? Außerdem zeigen Sie nicht wirklich, wie Sie Ihre Objekte bevölkern. – Jeremy

+0

@ Jeremy Es sollte 'getEventTime() [0]' als 'getEventTime [0]' würde nicht kompilieren (eine Methode ist kein Array). – extraneon

+0

@extraneon - Ich weiß das, und deshalb habe ich angenommen. Ich habe nur versucht, mit dem OP zu klären. Was aber, wenn das OP eine öffentliche Instanzvariable "getEventTime" hat, wie unwahrscheinlich es auch ist? – Jeremy

Antwort

2

Sind Sie sicher, dass im zweiten Beispiel, sollte es nicht sein:

if(eDetails.getEventTime() == null)

Statt:

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

Machst du sicher, dass du die [0] aus, wenn Sie verlassen mache den Null-Check?

Wenn die Funktion eDetails.getEventTime() kehrt null, dann werden Sie ein NullPointerException erhalten, wenn Sie versuchen, eDetails.getEventTime()[0];

1

zu tun scheint, dass, wenn Sie details.get(0).getEventTime() das Array erhalten zurückgegeben null ist.

+0

Konnte auch 'details.get (0) .getEventPlace()' sein, das null zurückgibt, da das auch ein Array (oder null) zurückgibt. – extraneon

0

Der einfachste Weg, um dies herauszufinden ist:

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]; 
} 

es nicht schön aussehen, es ist aber zumindest informativ.

Verwandte Themen