0

我正在使用 temboo 获取日历的所有事件。但是,我正在尝试创建事件和日期的哈希表。但是 for 循环说它是一个空指针异常,即使程序实际上能够访问第 i 个元素。我什至打印了它,并且 i 小于数组的大小。这是代码片段:错误在 for 循环的第二行。当 i = 23 时发生错误,但 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));
        }
    }

分解异常行后,当我尝试将 dateTime 作为字符串获取时发生异常,最后一部分创建异常。

4

1 回答 1

1

仅仅因为i数组的第 th 个元素存在,并不意味着该元素不存在null

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

如果i超出数组的范围,你会得到一个ArrayIndexOutOfBoundsException

null在使用它们之前检查索引数组元素。

很抱歉简短,不参考您的代码或其他来源。我在我的手机上。不过,您的问题的可能来源很清楚。

于 2014-02-16T02:04:29.553 回答