任何人都可以告诉我如何纠正以下代码才能正常工作吗?
编写一个方法filterEvens,它接受一个整数数组并返回一个只包含偶数值的新数组。
只包含偶数值的新数组。例如:
int[] data = {1, 3, 4, 2, 0, 5, -2};
int[] evens = filterEvens(data);
public static int[] filterEvent(int[] data) {
int countLength = 0;
for (int i = 0; i < data.length; i++) {
if (data[i] % 2 == 0) {
countLength++;
}
}
int[] filArray = new int[countLength];
for (int i = 0; i < data.length; i++) {
if (data[i] % 2 == 0) {
filArray[i] = data[i];
}
}
return filArray;
}
答案 0 :(得分:1)
你正在填写错误的索引。
你有
if(data[i]%2==0)
{
filArray[i]= data[i] ;
}
对于数据单元格而言是正确的,但filArray的单元格错误将其更改为
int j = 0;
for (int i =0; i< data.length;i++)
{
if(data[i]%2==0)
{
filArray[j]= data[i] ;
j++;
}
}
其余的看起来还不错。虽然你应该看看ArrayList
,因为它可以提高效率
答案 1 :(得分:1)
这里的问题是:
for (int i =0; i< data.length;i++)
{
if(data[i]%2==0)
{
filArray[i]= data[i] ;
}
}
您正在从值0循环 - > data.length。这是一个问题,因为数组filArray [i]的长度较小。
想象一下,你正在寻找某人的房子。在他们给你的街道上,让我们说Emerald Dr.房屋号码可以是2000 - 3000.然后你被告知他们住在4000 Emerald Dr.同样的情况,除了计算机试图找到房子。