0

tempboo を使用して、カレンダーのすべてのイベントを取得しています。ただし、イベントと日のハッシュテーブルを作成しようとしています。しかし、for ループは、プログラムが実際にその i 要素にアクセスできるにもかかわらず、null ポインター例外を示しています。私もそれを印刷しましたが、 i は配列のサイズよりも小さくなっています。スニペット コードは次のとおりです。エラーは for ループの 2 行目にあります。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