Java C#无法访问的代码(依赖于属性的阵列复印机)
我有一个数组,数字从-100到100。现在,我必须制作一个方法,将正数复制到另一个数组中。 我做了这个: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) {
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,它将扩展它的大小,以适应数组的长度。在初始化时,需要将使用的数组设置为正确的大小。