2010-11-22 75 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]; 
} 

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