2010-11-22 47 views
2

我試圖從任何數組中獲取一個字符串(封裝在一個Vector中)時,我總是收到一個NullPointerException異常。我似乎無法阻止發生錯誤。這應該是簡單的事情,但是我認爲我一直在看它太久,我可以確定使用另一組眼睛。這裏是我的代碼:關於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]; 

} 

所以,當我試圖讓在位置爲0的項目在數組中(當x爲0)是從eDetails.getEventTime返回,則拋出NullPointerException。

現在,當x爲0時,我碰巧知道getEventTime()數組的位置0處的數組元素是一個空字符串,但它不是空值。當x是1或2等,我可以檢索時間就好了。

的問題是,我仍然會收到NullPointerException異常,當我嘗試做這樣的事情如下:

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

or 

String result; 

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

任何想法?

謝謝!

+1

我假設你的意思是`getEventTime()[0]`在你的第二塊代碼中?另外,你並沒有真正展示如何填充你的對象。 – Jeremy 2010-11-22 19:20:15

+0

@Jeremy由於`getEventTime [0]`不會編譯(方法不是數組),所以它應該是`getEventTime()[0]`。 – extraneon 2010-11-22 19:42:19

回答

2

你肯定在你的第二個例子,它不應該是:

if(eDetails.getEventTime() == null)

相反的:

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

你確保你離開[0]關閉時,您做空檢查?

如果函數返回eDetails.getEventTime()null,那麼你會在嘗試做eDetails.getEventTime()[0];

1

看來,當你得到details.get(0).getEventTime()返回的數組爲null得到NullPointerException

0

算出這個最簡單的方法是:

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

它可能不是很好看,但至少它的信息。