我要做的是创建一个从另一个数组中提取偶数的数组。我不确定我是否以正确的方式解决了这个问题。我一直在寻找从函数/方法中返回语句的方法,我找不到任何东西,甚至不确定它是否可行。
无论如何,我在这里遇到的问题是'返回偶数阵列'下方'无法找到符号'。我不确定这意味着什么?
public static int[] getEvenArray(int[] array)
{
int dividedBy = 2;
int evenElement;
int evenCount = 0;
for(int i = 0; i < array.length; i++)
{
int[] evenArray;
evenElement = array[i] % dividedBy;
if(evenElement == 0)
{
evenCount++;
}
else
{
array[i] = 0;
}
evenArray = new int[evenCount];
for(int x = 0; x < evenArray.length; x++)
{
if(array[i] != 0)
{
evenArray[x] = array[i];
}
}
}
return evenArray;
}
这是我的一个讲座的教程,至少可以说有点挑战:-) 0
答案 0 :(得分:3)
evenArray
在for
循环的范围中定义。 (实际上比这更糟糕;你在每次迭代时都重新声明,所以丢弃以前的内容。)
因此,一旦您在for
循环之外,就无法引用它。
最快的解决方法是对此类型使用std::vector<int>
,并在函数的开头声明它。同时将函数的返回类型更改为相同。不要忘记适当调整矢量大小。
(继续,一位聪明的讲师会问你关于返回一个std::vector
,它可能会对该向量进行深层复制。预先C ++ 11你提到返回值优化,现在您可以讨论 r值引用。由于将使用移动构造函数,因此不会进行深层复制。
答案 1 :(得分:0)
块内声明的变量在其外部不可见;移动这个int [] evenArray;开始功能。