帮助java数组nullpointerexception

时间:2010-11-22 19:17:37

标签: java arrays nullpointerexception

我在尝试从任何数组(封装在Vector中)中获取字符串时,一直收到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];

 }

因此,当我尝试从eDetails.getEventTime返回的数组中的位置0(当x为0时)时,会抛出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];
 }

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

你确定在你的第二个例子中,它不应该是:

if(eDetails.getEventTime() == null)

而不是:

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

在进行空检查时,您确定要关闭[0]吗?

如果函数eDetails.getEventTime()返回null,那么当您尝试NullPointerException时,您将获得eDetails.getEventTime()[0];

答案 1 :(得分:1)

似乎当你得到details.get(0).getEventTime()时返回的数组为空。

答案 2 :(得分: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];
 }

它可能看起来不太好但至少它提供了丰富的信息。