我想做的是创建一个数组,从另一个数组中提取偶数。我不确定我的做法是否正确。我一直在寻找像函数/方法一样从语句返回的方法,但我找不到任何东西,甚至不确定是否可能。
无论如何,我在这里遇到的问题是“找不到符号”下面的“返回 EvenArray”。我不确定这意味着什么?
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
最佳答案
evenArray
是在 for
的范围内定义的环形。 (实际上比这更糟糕;您在每次迭代中重新声明它,因此丢弃以前的内容)。
所以一旦你离开 for
循环你无法引用它。
最快的解决方法是使用 std::vector<int>
对于这种类型,并在函数的开头声明它。还将函数的返回类型更改为相同。不要忘记适当调整 vector 的大小。
(继续,聪明的讲师会问您有关返回 std::vector
的问题,它可能会获取该 vector 的深拷贝。在 C++11 之前,您会提到返回值优化,现在您可以讨论r值引用。由于将使用移动构造函数,因此不会进行深层复制。
关于java - 为什么 for 语句内部无法识别变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27016822/