Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>You're whole code:</p> <pre><code>import java.util.*; public class Update { public final static int ITERATIONS = 5; public static void main(String[] args) { System.out.println("This program will simulate the game of Life."); Scanner console = new Scanner(System.in); System.out.println("Please input the size of your board."); System.out.println("Rows:"); final int rows = console.nextInt(); System.out.println("Columns:"); final int columns = console.nextInt(); System.out.println("Please enter a seed:"); final long seed = console.nextLong(); int[] birthLive = new int[4]; boolean[][] board = new boolean[rows][columns]; createMatrix(board, seed); birthAndLive(birthLive); for (int i = 0; i &lt; ITERATIONS; i++) { printMatrix(board); updateMatrix(board, birthLive); } } public static void createMatrix(boolean[][] board, long seed) { Random seedBool = new Random(seed); for (int i = 0; i &lt; board.length; i++) { for (int j = 0; j &lt; board[i].length; j++) { board[i][j] = false; } } for (int i = 1; i &lt; board.length - 1; i++) { for (int j = 1; j &lt; board[i].length - 1; j++) { board[i][j] = seedBool.nextBoolean(); } } } public static void birthAndLive(int[] birthLive) { Scanner console = new Scanner(System.in); System.out.println("Please input the birth range and the live range:"); System.out.println("Birth (Low):"); birthLive[0] = console.nextInt(); System.out.println("Birth (High):"); birthLive[1] = console.nextInt(); System.out.println("Live (Low):"); birthLive[2] = console.nextInt(); System.out.println("Live (High):"); birthLive[3] = console.nextInt(); } public static void printMatrix(boolean[][] board) { for (int i = 0; i &lt; board.length; i++) { for (int j = 0; j &lt; board[i].length; j++) { if (board[i][j] == false) System.out.print(" - "); else System.out.print(" # "); } System.out.println(); } System.out.println(); } public static void updateMatrix(boolean[][] board, int[] birthLive) { // clone the board so modified values don't affect the results of upcoming // spaces boolean[][] boardCopy = board.clone(); for (int i = 0; i &lt; board.length; i++) boardCopy[i] = board[i].clone(); int count = 0; for (int i = 1; i &lt; board.length - 1; i++) { for (int j = 1; j &lt; board[i].length - 1; j++) { // different requirements for dead or living pieces' living status if (board[i][j] == false) { // check the nine-by-nine square, starting at (-1, 1) and ending // at (1, -1) where 0 is the affected location // * * * // * 0 * // * * * for (int ii = board[i - 1].length; ii &lt; board[i + 1].length; ii++) { for (int jj = board[j - 1].length; ii &lt; board[j + 1].length; jj++) { if (boardCopy[i][j] == true) count++; } } // check to see what high and low amt of required adjacent // lifeforms is if (count &gt;= birthLive[0] &amp;&amp; count &lt;= birthLive[1]) board[i][j] = true; else board[i][j] = false; count = 0; } else { for (int ii = board[i - 1].length; ii &lt; board[i + 1].length; ii++) { for (int jj = board[j - 1].length; ii &lt; board[j + 1].length; jj++) { if (boardCopy[i][j] == true) count++; } } count -= 1; // For board[i][j] is always true if (count &gt;= birthLive[2] &amp;&amp; count &lt;= birthLive[3]) board[i][j] = true; else board[i][j] = false; count = 0; } } } } } </code></pre> <p>You're setting your board[...] values in the body of the updateMatrix method and shouldn't be doing this as it will effect the calculations of neighboring cells prematurely. Instead only set the cloned array's cells in the body of this method. And then at the <em>end</em> of the method either iterate through the cloned board copying it's results into the original board or else return the cloned board and when calling the method use it to set its results into the board... i.e.,</p> <pre><code>board = updateMatrix(board, birthLive); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload