title: Java Game of life - recursion - user is prompted to enter file name and number of generations to run
body: <p>This code is for a game of life application.
  My code promts a user for a text file the container rows and columns.
  The file is read and entered into a 2D array.
  The array is then pass to my nextGeneration method and this prints the generation.</p>
  
  <p>I need to pass the future array back to the nextGeneration as many times a required per the users input.</p>
  
  <p>I've been struggling all day on how to pass the nextGeneration the "future" array once it has gone through the first generation.</p>
  
  <p>Any help would be greatly appreciated. Thanks. </p>
  
  <pre><code>static void nextGeneration(int grid[][], int M, int N, int NumberofGenerations) 
  { 
      int[][] future = new int[M][N]; 
  
      // Loop through every cell 
  
  
      for (int l = 1; l &lt; M - 1; l++) 
      { 
          for (int m = 1; m &lt; N - 1; m++) 
              { 
          // finding no Of Neighbours that are alive 
          int aliveNeighbours = 0; 
          for (int i = -1; i &lt;= 1; i++) 
              for (int j = -1; j &lt;= 1; j++) 
              aliveNeighbours += grid[l + i][m + j]; 
  
  
          // The cell needs to be subtracted from 
          // its neighbours as it was counted before 
          aliveNeighbours -= grid[l][m]; 
  
          // Implementing the Rules of Life 
  
          // Cell is lonely and dies 
          if ((grid[l][m] == 1) &amp;&amp; (aliveNeighbours &lt; 2)) 
              future[l][m] = 0; 
  
          // Cell dies due to over population 
          else if ((grid[l][m] == 1) &amp;&amp; (aliveNeighbours &gt; 3)) 
              future[l][m] = 0; 
  
          // A new cell is born 
          else if ((grid[l][m] == 0) &amp;&amp; (aliveNeighbours == 3)) 
              future[l][m] = 1; 
  
          // Remains the same 
          else
              future[l][m] = grid[l][m]; 
  
          }
  
      }
  
  
      if (NumberofGenerations != 0)
               {
                  return   NumberofGenerations -1 *  nextGeneration(future[l][m], 20, 20,NumberofGenerations -1); 
                  // recursive call
              else
                  return 1;
               }
  
  
  
      System.out.println("Next Generation"); 
      for (int i = 0; i &lt; M; i++) 
      { 
              for (int j = 0; j &lt; N; j++) 
              { 
                  if (future[i][j] == 0) 
                      System.out.print(" "); 
                  else
                      System.out.print("*"); 
              } 
              System.out.println(); 
      } 
  
  } 
  </code></pre>