java.lang.IndexOutOfBoundsException:索引5无效,大小为5

Dau*_*evy 1 java android

有时会发生此错误,有时它可以正常工作.我真的无法理解问题所在.

int length = CitiesInfos.citiesOnTheRoad.length;
for (int i = 0; i < length; i++)
{
    HashMap<String,String> temp=new HashMap<String, String>();
    temp.put(FIRST_COLUMN, CitiesInfos.citiesOnTheRoad[i]);

    if (CitiesInfos.roadWorkArrayList.get(i)!=null)
    {
        temp.put(SECOND_COLUMN, CitiesInfos.weatherArrayList.get(i).getCelcius() + ", " +
                 CitiesInfos.weatherArrayList.get(i).getWeatherStatus());
    }
    else
    {
        temp.put(SECOND_COLUMN, " ");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是logCat指向的行.问题是什么?

Jam*_*zba 5

增量变量i循环从0到citiesOnTheRoad.length - 1,但是,你也使用i作为另外两个ArrayList变量的索引: weatherArrayList并且roadWorkArrayList,你如何确定它们是正确的大小?

我添加了一个可以防止你收到的崩溃的检查,但我提醒你仔细查看你的代码,而不是把它放在上面.

    int length = CitiesInfos.citiesOnTheRoad.length;
    for (int i = 0; i < length; i++)
    {
        HashMap<String,String> temp=new HashMap<String, String>();
        temp.put(FIRST_COLUMN, CitiesInfos.citiesOnTheRoad[i]);
        if(i < CitiesInfos.roadWorkArrayList.size() 
            && i < CitiesInfos.weatherArrayList.size() 
            && CitiesInfos.roadWorkArrayList.get(i)!=null)
        {
            temp.put(SECOND_COLUMN, CitiesInfos.weatherArrayList.get(i).getCelcius() + ", " + CitiesInfos.weatherArrayList.get(i).getWeatherStatus());
        }
        else
        {
            temp.put(SECOND_COLUMN, " ");
        }
}
Run Code Online (Sandbox Code Playgroud)