java.lang.IndexOutOfBoundsException:索引5无效,大小为5
此错误有时会发生,有时工作正常。我真的不明白问题出在哪里java.lang.IndexOutOfBoundsException:索引5无效,大小为5,java,android,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]);
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, " ");
}
}
int length=citiesinfo.citiesOnTheRoad.length;
for(int i=0;i
这是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, " ");
}
}
int length=citiesinfo.citiesOnTheRoad.length;
for(int i=0;i
增量变量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, " ");
}
}
int length=citiesinfo.citiesOnTheRoad.length;
for(int i=0;i
正如James Wierzba所提到的,您对循环中的数组列表使用相同的控制变量,这就是您的问题所在
在尝试检索元素之前,需要确保有足够的项
一些建议:
看起来您将相关数据存储在两个数组中,最好将这些数据分组到一个类中,例如City
然后,可以让道路阵列上的城市包含许多城市对象,每个对象存储有关该城市天气的信息
我还建议您不要将数组作为公共变量,您应该将它们作为私有或受保护的,并使用getter/setter来访问它们。正如James Wierzba所提到的,您对循环中的数组列表使用相同的控制变量,这就是您的问题所在 在尝试检索元素之前,需要确保有足够的项 一些建议: 看起来您将相关数据存储在两个数组中,最好将这些数据分组到一个类中,例如City 然后,可以让道路阵列上的城市包含许多城市对象,每个对象存储有关该城市天气的信息
我还建议您不要将数组作为公共变量,应该将它们作为私有或受保护的,并使用getter/setter来访问它们。这是一个循环吗?显示完整的循环体,包括代码,在其中递增
i
并检查i
变量的边界。另外,请将标记更改为(我想):java
和android
。我编辑了我的问题。THXI如果大小为5,那么您可以访问的最高索引为4。i从0循环到citiesOnTheRoad.length-1(正确),但您使用i索引roadWorkArrayList和weatherArrayList,您如何验证它们的大小是否正确?这是一个循环吗?显示完整的循环体,包括代码,在其中递增i
并检查i
变量的边界。另外,请将标记更改为(我想):java
和android
。我编辑了我的问题。THXI如果大小为5,那么您可以访问的最高索引为4。i从0循环到citiesOnTheRoad.length-1(正确),但您使用i来索引roadWorkArrayList和weatherArrayList,您如何验证它们的大小是否正确?我检查了所有ArrayList的控制变量,似乎没有问题。有没有办法先完成第一个“temp.put(第二列,CitiesInfo.weatherArrayList.get(i).getCelcius()+”,“+CitiesInfo.weatherArrayList.get(i).getWeatherStatus());”部分,然后再完成第二个部分。对于每个循环周期。我考虑了runOnUIThread,但它需要最终的变量。我检查了所有ArrayList的控制变量,看起来还可以。有没有办法先完成第一个“temp.put(第二列,CitiesInfo.weatherArrayList.get(i).getCelcius()+”,“+CitiesInfo.weatherArrayList.get(i).getWeatherStatus());”部分,然后再完成第二个部分。对于每个循环周期。我想到了runOnUIThread,但它