C#无法访问的代码(依赖于属性的数组复制器)

时间:2014-02-28 15:17:22

标签: java arrays indexing copy indexoutofrangeexception

我有一个数组,数字范围从-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,我不明白。

2 个答案:

答案 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
}