Java 在main方法中调用我的返回值?genN无法解析为变量 无法解析我的变量genN。对于gen0,同样的错误。我是 尝试将nextG和gen0方法放入我的主方法中。我试着 创建相同类型的变量,然后将我的方法放入这些变量中 变量。但我发现了错误。我想我不明白 如何从我的方法中获取返回值,以将它们放入我的主 方法来运行我的程序。感谢您的帮助 发现错误:
错误:gen0无法解析为变量 错误:无法将genN解析为变量 这是我的下一个错误发生的地方:Java 在main方法中调用我的返回值?genN无法解析为变量 无法解析我的变量genN。对于gen0,同样的错误。我是 尝试将nextG和gen0方法放入我的主方法中。我试着 创建相同类型的变量,然后将我的方法放入这些变量中 变量。但我发现了错误。我想我不明白 如何从我的方法中获取返回值,以将它们放入我的主 方法来运行我的程序。感谢您的帮助 发现错误:,java,Java,错误:gen0无法解析为变量 错误:无法将genN解析为变量 这是我的下一个错误发生的地方: boolean [] generation0; generation0 = new boolean [i]; generation0 = gen0; //error boolean [] nextGeneration; nextGeneration = new boolean [j]; nextGeneration = nextG (genN); // error 这是我下一个获取nextG的方法
boolean [] generation0;
generation0 = new boolean [i];
generation0 = gen0; //error
boolean [] nextGeneration;
nextGeneration = new boolean [j];
nextGeneration = nextG (genN); // error
这是我下一个获取nextG
的方法:
public static boolean [] nextG (boolean [] genN, boolean [] gen0){
boolean [] nextG;
nextG = genN (gen0); // takes genN array puts it in nextG.
double x = .5, // spacing of squares on x axis.
y = 22; // spacing of squares on y axis.
for(int h =0; h<23; h++) { // creates 22 generations
nextG = genN (gen0);
gen0 = genN (gen0);
y--; // decreases y after each genertion
x = .5; // resets x after each generation
for(int j=0; j<49; j++){ // determines if cell gets filled or unfilled square.
if( gen0 [j] == false){
StdDraw.square(x, y, .5);
}
else {
StdDraw.filledSquare(x, y, .5);
} // if statement
x++; // increases x after each new cell created.
} // for loop 2
} // for loop 1
return nextG;
} // nextG
/*------------------------------------------------------------------------
| Method: gen0
|
| Purpose: creates the first generation
|
| Parameters: genN
|
| Returns: The first gen0
*-----------------------------------------------------------------------*/
public static boolean [] gen0 ()
{
boolean [] gen0;
gen0 = new boolean [49];
gen0[23] = true; // sets the the array at 23 to true or alive.
for(int i =0 ; i<49; i++){ // goes through the first generation
if( gen0 [i] == false){ // all false except gen0[23]
StdDraw.square(i+.5, 22, .5);
} else {
StdDraw.filledSquare(i+.5, 22, .5);
} // if statement
} // for loop
return gen0;
}// gen0
/*------------------------------------------------------------------------
| Method: genN
|
| Purpose: computes Rule 126 for the next generation
|
| Parameters: gen0
|
| Returns: boolean values based on rule 126.
*-----------------------------------------------------------------------*/
public static boolean [] genN (boolean [] gen0)
{
boolean [] genN;
genN = new boolean [49]; // array of 49 cells
for(int i = 0; i < gen0.length-2; i++){ // computes and applies rule 126
if( gen0 [i]== true && gen0 [i + 1]== true && gen0 [i+2]==true){
genN[i+1] = false;
}
if(gen0 [i] == true && gen0 [i+1] == true && gen0 [i+2] == false){
genN [i+1] = true;
}
if(gen0 [i] == true && gen0 [i+1] == false && gen0 [i+2] == true){
genN [i+1] = true;
}
if(gen0 [i] == true && gen0 [i+1] == false && gen0 [i+2] == false){
genN [i+1] = true;}
if(gen0 [i] == false && gen0 [i+1] == true && gen0 [i+2] == true){
genN [i+1] = true;}
if(gen0 [i] == false && gen0 [i+1] == true && gen0 [i+2] == false){
genN [i+1] = true;}
if(gen0 [i] == false && gen0 [i+1] == false && gen0 [i+2] == true){
genN [i+1] = true;}
if(gen0 [i] ==false && gen0 [i+1] == false && gen0 [i+2] == false){
genN [i+1] = false;} // last if statement
} // for loop
return genN;
} // genN
publicstaticboolean[]nextG(boolean[]genN,boolean[]gen0){
布尔[]nextG;
nextG=genN(gen0);//将genN数组放入nextG。
double x=.5,//x轴上的正方形间距。
y=22;//y轴上正方形的间距。
对于(int h=0;h,从您发布的内容来看,您似乎从未在main()方法中声明过gen0或genN。您将它们放在NextG函数的声明中,这看起来很好,但在main()中,您试图将gen0分配给generation0,而没有声明它,例如:
boolean[] gen0;
或者您可以同时声明和分配它:
boolean[] gen0 = new boolean[7];
比如说
但是,在您的情况下,创建generation0,然后为其分配一个新数组,到目前为止还可以:
boolean [] generation0;
generation0 = new boolean [i];
然后,使用刚刚分配给新数组的同一变量,尝试将其分配给main()从未听说过的对象(gen0):
你想在这里做什么?这部分在逻辑上没有意义,因为你只是在最后一行分配了那个变量。但是,计算机不理解它的原因是(至少从你发布的内容来看),你从未在main中的任何地方声明过gen0。你在单独的函数中声明了它,但在main()中声明了它,它不知道那是指什么
稍后,您将对genN执行相同的操作:
nextGeneration = nextG (genN);
您试图将一个名为“genN”的变量传递到nextG函数中,但main()不知道genN是什么,因此无法将该变量传递到nextG
希望这会有所帮助。我认为发布错误消息应该会有所帮助。您是否在main()方法中声明/初始化了gen0和genN?还向我们展示了在何处声明/实例化变量gen0
和genN
(可能也是nextG
)因为很难通过向我们展示代码片段的方式来理解变量的范围。@Christian,尝试使用适当的IDE(例如intellij)-它将突出显示明显的错误
generation0 = gen0;
nextGeneration = nextG (genN);