Java 为什么语句不能从内部识别变量?
我想做的是创建一个数组,从另一个数组中提取偶数。我不确定我的做法是否正确。我一直在寻找从语句中返回函数/方法的方法,但我找不到任何东西,甚至不确定这是否可行 无论如何,我在这里遇到的问题是“找不到符号”下面的“返回数组”。我不确定这是什么意思Java 为什么语句不能从内部识别变量?,java,return,cannot-find-symbol,Java,Return,Cannot Find Symbol,我想做的是创建一个数组,从另一个数组中提取偶数。我不确定我的做法是否正确。我一直在寻找从语句中返回函数/方法的方法,但我找不到任何东西,甚至不确定这是否可行 无论如何,我在这里遇到的问题是“找不到符号”下面的“返回数组”。我不确定这是什么意思 public static int[] getEvenArray(int[] array) { int dividedBy = 2; int evenElement; int evenCount = 0;
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;
}
公共静态int[]getEvenArray(int[]array)
{
int除以=2;
整数元;
int evenCount=0;
for(int i=0;i
这是我的一个讲座中的一个教程,至少说起来有点挑战性:-)0
evenArray
是在for
循环的范围内定义的。(实际上比这更糟;您在每次迭代中都要重新说明它,所以要丢弃以前的内容)
因此,一旦您在for
循环之外,就无法引用它
最快的修复方法是对这种类型使用std::vector
,并在函数的开头声明它。同时将函数的返回类型更改为相同的。不要忘记适当调整向量的大小
(接下来,聪明的讲师会问你返回一个
std::vector
,它可能会获取该向量的深度副本。在C++11之前,你会提到返回值优化,现在你可以谈论r值引用。由于将使用移动构造函数,因此不会获取深度副本).evenArray
在for
循环的范围内定义。(实际上比这更糟;您在每次迭代中都要重新说明它,所以要丢弃以前的内容)
因此,一旦您在for
循环之外,就无法引用它
最快的修复方法是对这种类型使用std::vector
,并在函数的开头声明它。同时将函数的返回类型更改为相同的。不要忘记适当调整向量的大小
(接下来,聪明的讲师会问你返回一个std::vector
,它可能会获取该向量的深度副本。在C++11之前,你会提到返回值优化,现在你可以谈论r值引用。由于将使用移动构造函数,因此不会获取深度副本).evenArray
在for
循环的范围内定义。(实际上比这更糟;您在每次迭代中都要重新说明它,所以要丢弃以前的内容)
因此,一旦您在for
循环之外,就无法引用它
最快的修复方法是对这种类型使用std::vector
,并在函数的开头声明它。同时将函数的返回类型更改为相同的。不要忘记适当调整向量的大小
(接下来,聪明的讲师会问你返回一个std::vector
,它可能会获取该向量的深度副本。在C++11之前,你会提到返回值优化,现在你可以谈论r值引用。由于将使用移动构造函数,因此不会获取深度副本).evenArray
在for
循环的范围内定义。(实际上比这更糟;您在每次迭代中都要重新说明它,所以要丢弃以前的内容)
因此,一旦您在for
循环之外,就无法引用它
最快的修复方法是对这种类型使用std::vector
,并在函数的开头声明它。同时将函数的返回类型更改为相同的。不要忘记适当调整向量的大小
(接下来,聪明的讲师会问你返回一个std::vector
,它可能会获取该向量的深度副本。在C++11之前,你会提到返回值优化,现在你可以谈论r值引用。由于将使用移动构造函数,因此不会获取深度副本).块内声明的变量在块外不可见;将此整数移动到数组中;到函数的最开始处。在块内声明的变量在块外不可见;将此整数移动到数组中;到函数的最开始处。在块内声明的变量在块外不可见;将此整数移动到数组中;到函数的最开始处。在块内声明的变量在块外不可见;将此整数移动到数组中;到函数的最开始。我移动了'int[]evenArray;'在for循环之前,然后我得到“notbeinitialized”错误,但它已在for循环内部初始化。问题是因为它的初始化在“return evenArray;”的for循环的范围内看不到初始化。使用<代码> STD::vector < /COD>除非你特别要求不要这样做。@ Bathsheba:要做到这一点,你必须首先重写C++中的代码。我的道歉,混淆了。我今天早上做的是C++:它确实是Java-It[IN]数组;在for循环之前,然后我得到“notbeinitialized”错误,但它已在for循环内部初始化。问题是因为它的初始化在“return evenArray;”的for循环的范围内看不到初始化。使用<代码> STD::vector < /COD>除非你特别要求不要这样做。@ Bathsheba:要做到这一点,你必须首先重写C++中的代码。我的道歉,混淆了。我今天早上做的是C++:它确实是Java-It[IN]数组;在for循环之前,然后