Java 当我可以访问数组元素时,为什么for循环中会出现空指针异常?

Java 当我可以访问数组元素时,为什么for循环中会出现空指针异常?,java,calendar,temboo,Java,Calendar,Temboo,我正在使用temboo获取日历中的所有事件。但是,我正在尝试创建事件和日期的哈希表。但是for循环表示这是一个空指针异常,即使程序实际上能够访问第i个元素。我甚至已经打印了它,并且I小于数组的大小。下面是代码片段:错误位于for循环的第二行。当i=23时会出现Errr,但items.size为41 GetAllEvents getAllEventsChoreo = new GetAllEvents(session); // Get an InputSet object for the chor

我正在使用temboo获取日历中的所有事件。但是,我正在尝试创建事件和日期的哈希表。但是for循环表示这是一个空指针异常,即使程序实际上能够访问第i个元素。我甚至已经打印了它,并且I小于数组的大小。下面是代码片段:错误位于for循环的第二行。当i=23时会出现Errr,但items.size为41

GetAllEvents getAllEventsChoreo = new GetAllEvents(session);

// Get an InputSet object for the choreo
GetAllEventsInputSet getAllEventsInputs = getAllEventsChoreo.newInputSet();

// Set inputs
getAllEventsInputs.set_AccessToken(accessToken);
getAllEventsInputs.set_ClientID(clientID);
getAllEventsInputs.set_ClientSecret(clientSecret);
getAllEventsInputs.set_CalendarID(callIDs[0]);

// Execute Choreo
GetAllEventsResultSet getAllEventsResults =    getAllEventsChoreo.execute(getAllEventsInputs);
results = getAllEventsResults.get_Response();
System.out.println(results);

root = jp.parse(results);
rootobj = root.getAsJsonObject();
JsonArray items = rootobj.get("items").getAsJsonArray();

System.out.println("Abour to enter the for loop\nItems:\n"+items.toString());
System.out.println("****************************\nEnter the for loop");
System.out.println("iems Size: "+items.size());
System.out.println(items.get(23).toString());
for(int i = 0;i < items.size();i++)
{
    System.out.println("i: "+i);
    String startTime = items.get(i).getAsJsonObject().get("start").getAsJsonObject().get("dateTime").getAsString();
    System.out.println("startTime: "+startTime);
    String dayKey = startTime.split("T")[0];

    if(dayKey.equals(beginDate)==false | dayKey.equals(endDate)==false)
        {
        System.out.println(startTime + " not the one interested so skipping");
        continue;
        }
    System.out.println("passed the first if in for loop");

    String endTime = items.get(i).getAsJsonObject().get("end").getAsJsonObject().get("dateTime").getAsString();
    String name = items.get(i).getAsJsonObject().get("summary").getAsJsonPrimitive().getAsString();

    calendarEvent eventTemp = new calendarEvent(name,startTime,endTime);

    if(table.containsKey(dayKey))
        table.get(dayKey).add(eventTemp);
    else
    {   
    ArrayList<calendarEvent> schedule = new ArrayList<calendarEvent>();
    schedule.add(eventTemp);
    table.put(dayKey,schedule);
    }
}
Set<String> key = table.keySet();
Iterator<String> it = key.iterator();



    while(it.hasNext())
    {
        String keyValue = it.next();
        System.out.println("Events on "+keyValue);
        ArrayList<calendarEvent> temp = table.get(keyValue);

        for(int j =0;j<temp.size();j++)
        {
            System.out.println(temp.get(j));
        }
    }
GetAllEvents getAllEventsChoreo=新的GetAllEvents(会话);
//获取choreo的InputSet对象
GetAllEventsInputSet getAllEventsInputs=getAllEventsChoreo.newInputSet();
//设置输入
GetAllEventInputs.set_AccessToken(AccessToken);
getAllEventInputs.set_ClientID(ClientID);
GetAllEventInputs.set_ClientSecret(ClientSecret);
GetAllEventInputs.set_CalendarID(CallId[0]);
//执行舞蹈动作
GetAllEventsResultSet getAllEventsResults=getAllEventsChoreo.execute(getAllEventsInputs);
结果=getAllEventsResults.get_Response();
系统输出打印项次(结果);
root=jp.parse(结果);
rootobj=root.getAsJsonObject();
JsonArray items=rootobj.get(“items”).getAsJsonArray();
System.out.println(“关于输入for循环\n项:\n”+项.toString());
System.out.println(“输入for循环”);
System.out.println(“iems大小:+items.Size());
System.out.println(items.get(23.toString());
对于(int i=0;i对于(int j=0;j,仅仅因为数组的
i
th元素存在,并不意味着该元素不是
null

引用此类元素的属性或方法将产生
NullPointerException

如果
i
超出了数组的边界,则会得到一个
ArrayIndexOutOfBoundsException

在使用索引数组元素之前,请检查它们是否为
null


很抱歉,简单地说,没有参考您的代码或其他来源。我正在打电话。但是,您的问题的可能来源非常清楚。

哪一行导致了异常?实际上,最好是复制错误消息的全文,以便有人能找出它。String endTime=items.get(I)。getAsJsonObject().get(“end”).getAsJsonObject().get(“日期时间”).getAsString();链式调用中的项或任何其他点都为空。无法从提供的信息中分辨出是哪一个点,但您可以尝试将该行拆分为多个语句来找出答案。为什么不使用调试器呢!相信我,有时候使用IDE的调试器要比问这样的问题好得多。