![](/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.