Java 在main方法中调用我的返回值?genN无法解析为变量 无法解析我的变量genN。对于gen0,同样的错误。我是 尝试将nextG和gen0方法放入我的主方法中。我试着 创建相同类型的变量,然后将我的方法放入这些变量中 变量。但我发现了错误。我想我不明白 如何从我的方法中获取返回值,以将它们放入我的主 方法来运行我的程序。感谢您的帮助 发现错误:

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的方法

错误:gen0无法解析为变量

错误:无法将genN解析为变量

这是我的下一个错误发生的地方:

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);