java - 为什么 for 语句内部无法识别变量?

标签 java return cannot-find-symbol

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

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

相关文章:

Java持久化,数据库实体和其他模型之间的通信

linux - 我可以在MacOS的_start处通过代码执行 `ret`指令吗? Linux的?

java - “找不到符号”或“无法解析符号”错误是什么意思?

java - 为什么内部类可以访问私有(private)方法?

java - 在可搜索的 ListView 中处理 onItemClick 事件

java - 使用递归检查字符串是否为回文?

wpf - 如何使用 Dispatcher.Invoke 返回值?

javascript - 跳出嵌套循环 : return or label/break?

java - “找不到符号”或“无法解析符号”错误是什么意思?

Java - 无法找到其他类的符号错误