我有一个数组,数字范围从-100到100.现在,我必须创建一个方法,将正数复制到另一个数组。 我做了这个:
static int[] ArrayCopy(int[] t)
{
int a = 0;
int[] g = new int[0];
for (int i = 0; i < t.Length; i++)
{
if (t[i] > 0)
{
g[a] = t[i];
a++;
}
}
return g;
}
程序终止于IndexOutOfRange,我不明白。
答案 0 :(得分:2)
您正在初始化大小为零的数组g
。一旦运行开始,您尝试在特定索引处访问g
- 该索引不存在。
我假设您通过以下方式初始化数组g
:
int[] g = new int[t.Length];
答案 1 :(得分:1)
你需要2个循环。一个计算有多少阳性,然后一个复制它们。
static int[] ArrayCopy(int[] t)
{
int numPositives = 0;
for(int i = 0 ; i < t.length ; i++)
{
if(t[i] > 0)numPositives++;
}
int[] newArray = new int[numPositives];
int curPositive = 0;
for(int i = 0 ; i < t.length ; i++)
{
if(t[i] > 0)
{
newArray[curPositive] = t[i];
curPositive++;
}
}
return newArray
}