0

我想做的是创建一个从另一个数组中提取偶数的数组。我不确定我是否采取了正确的方法。我一直在寻找从语句中返回的方法,例如函数/方法,但我找不到任何东西,甚至不确定是否可能。

无论如何,我在这里遇到的问题是“找不到符号”下方的“返回 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

4

2 回答 2

3

evenArray是在循环范围内定义的。for(实际上比这更糟;您在每次迭代时都重新声明它,因此丢弃了以前的内容)。

因此,一旦您在for循环之外,您就无法引用它。

最快的解决方法是std::vector<int>对这种类型使用 a,并在函数的开头声明它。还将函数的返回类型更改为相同。不要忘记适当地调整向量的大小。

(继续前进,一位聪明的讲师会问你返回一个std::vector可能会对该向量进行深拷贝的问题。在 C++11 之前,你会提到返回值优化,现在你可以谈论r-value 引用。没有深拷贝将被采用,因为将使用移动构造函数)。

于 2014-11-19T12:29:03.600 回答
0

在块内声明的变量在块外不可见;移动这个 int[] evenArray; 到功能的最开始。

于 2014-11-19T12:31:28.507 回答