Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java C#无法访问的代码(依赖于属性的阵列复印机)_Java_Arrays_Indexing_Copy_Indexoutofrangeexception - Fatal编程技术网

Java C#无法访问的代码(依赖于属性的阵列复印机)

Java C#无法访问的代码(依赖于属性的阵列复印机),java,arrays,indexing,copy,indexoutofrangeexception,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) {

我有一个数组,数字从-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;

     }
静态int[]数组复制(int[]t)
{
int a=0;
int[]g=新的int[0];
对于(int i=0;i0)
{
g[a]=t[i];
a++;
}
}
返回g;
}

程序以IndexOutOfRange终止,我不明白。

您正在初始化数组
g
,大小为零。运行一开始,您就尝试访问特定索引处的
g
,该索引不存在。 我假设您需要按以下方式初始化数组
g

int[] g = new int[t.Length];

你需要两个循环。一个用来计算有多少阳性,然后一个用来复制它们

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
}
静态int[]数组复制(int[]t)
{
int numPositives=0;
对于(int i=0;i0)numPositives++;
}
int[]newArray=newint[numPositives];
int curPositive=0;
对于(int i=0;i0)
{
newArray[curPositive]=t[i];
阳性++;
}
}
返回新数组
}

谢谢,它现在可以工作了,但现在是我想要的方式。它给出了类似这样的结果:061230123。所以它确实复制了正片,但是把零复制到了原片中负片的位置。我需要一个数组,它只能解决正面的问题。无论如何,谢谢!:)@USER 3365304:也许还有另外一个问题,但是你问的问题得到了回答。也许考虑使用一个ARARYLIST,它将扩展它的大小,以适应数组的长度。在初始化时,需要将使用的数组设置为正确的大小。