【发布时间】:2015-12-04 15:01:42
【问题描述】:
我知道这一定是一个重复的问题,但我不得不问,因为我不明白为什么我的代码不起作用。我收到此错误:
索引超出范围。必须是非负数且小于集合的大小
这是我的代码中引发异常的部分:
private static void getPattern(ArrayList arrayList1)
{
ArrayList array_2008 = new ArrayList();
ArrayList array_2009 = new ArrayList();
ArrayList array_2010 = new ArrayList();
ArrayList array_2011 = new ArrayList();
ArrayList array_2012 = new ArrayList();
for (int i = 0; i < arrayList1.Count; i++)
{
if (arrayList1[i].ToString().Contains("2008"))
{
int a = getIndex(arrayList1[i].ToString());
array_2008[a] = arrayList1[i];
}
if (arrayList1[i].ToString().Contains("2009"))
{
int a = getIndex(arrayList1[i].ToString());
array_2009[a] = arrayList1[i];
}
else if (arrayList1[i].ToString().Contains("2010"))
{
int a = getIndex(arrayList1[i].ToString());
array_2010[a] = arrayList1[i];
}
else if (arrayList1[i].ToString().Contains("2011"))
{
int a = getIndex(arrayList1[i].ToString());
array_2011[a] = arrayList1[i];
}
else if (arrayList1[i].ToString().Contains("2012"))
{
int a = getIndex(arrayList1[i].ToString());
array_2012[a] = arrayList1[i];
}
}
请给我一个答案。我不知道我该怎么做。它抛出了上面提到的异常。问题是它在arraylist1[0] 位置抛出。这是为什么?如何解决?
这里的值:
"4/28/2008","4/29/2008",5/10/2008 同样是 33 个值
【问题讨论】:
-
快到 2016 年了。停止使用
ArrayList。请改用List<T>。 -
您的
ArrayLists(array_2008、array_2009、array_2010、array_2011和array_2012)为空,因此您无法访问索引。你需要添加一些东西。 -
@MaximilianGerhardt 显然问题不在于
arraylist1,因为for循环使用的是arraylist1.Count。 -
OP 是一个初学者,也许引导他们解决他们的问题而不是责备他们没有完全按照你的方式做事会更有帮助。