前4个值在新数组中正确设置。它与我的变量'count'的某些东西有关,而这个变量没有被正确设置。该程序的目标是简单地获取偶数,并将它们放入一个新的数组中。
我已经添加了4作为测试,这看起来很完美,但我不认为这是问题。
int[] list = {8,5,4,11,12,2,1,3,10,6,7};
int count = 0;
int gr = 0;
for(int n=0; n<list.length; n++)
{
if(list[n] % 2 == 0)
{
count++;
}
}
int[] evn = new int[count];
for(int k = 0; k<=count; k++)
{
if(list[k] % 2 == 0)
evn[gr++] = list[k];
}
return evn;
目前,阵列打印“8,4,12,2,0,0”时应打印“8,4,12,2,10,6”
发生这种情况是因为count
总是小于数组的大小(list.length
),因此在第二个for循环中,你永远不会迭代直到数组结束。
将第二个for循环更改为迭代直到数组结尾,如下所示:
for(int k = 0; k < list.length; k++)
你只穿过list
的一部分,如for
条件所述:
for(int k = 0; k<=count; k++)
^--here--^
这是因为count
的值低于原始数组的长度。更改此条件以遍历整个数组:
for(int k = 0; k<list.length; k++)
要遍历整个list
,请更改以下内容:
for(int k = 0; k<=count; k++)
至
for(int k = 0; k<list.lengtb; k++)