![](/img/trans.png)
[英]java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
[英]java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5
有时会出现此错误,有时会正常工作。 我真的不明白是什么问题。
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, " ");
}
}
这是logCat指向的行。 可能是什么问题?
增量变量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, " ");
}
}
正如James Wierzba所提到的,您对循环中的数组列表使用了相同的控制变量,这就是您的问题。
在尝试检索元素之前,需要确保有足够的项目。
一些建议:
似乎您将相关数据存储在两个数组中,最好将这些数据分组到一个类中,例如City。
然后,您可以使道路阵列上的城市包含多个城市对象,每个对象存储有关该城市天气的信息。
我还建议您不要将数组作为公共变量,而应该将它们设置为私有或受保护,并使用getter / setter来访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.