Question

Trying to build a data structure for a sudoku board, and I want to print it to the console for starters. I'm using a 2 dimensional array for represent each cell on a sudoku game and I'm having a really nooby problem printing it out.

public class Main {

public static void main(String[] args) {

    int[][] puzzleBoard = {};

    //Row 1
    puzzleBoard[1][1] = 0;
    puzzleBoard[2][1] = 0;
    puzzleBoard[3][1] = 0;
    puzzleBoard[4][1] = 0;
    puzzleBoard[5][1] = 0;
    puzzleBoard[6][1] = 0;
    puzzleBoard[7][1] = 0;
    puzzleBoard[8][1] = 0;
    puzzleBoard[9][1] = 0;

    //Row 2
    puzzleBoard[1][2] = 0;
    puzzleBoard[2][2] = 0;
    puzzleBoard[3][2] = 0;
    puzzleBoard[4][2] = 0;
    puzzleBoard[5][2] = 0;
    puzzleBoard[6][2] = 0;
    puzzleBoard[7][2] = 0;
    puzzleBoard[8][2] = 0;
    puzzleBoard[9][2] = 0;

    //Row 3
    puzzleBoard[1][3] = 0;
    puzzleBoard[2][3] = 0;
    puzzleBoard[3][3] = 0;
    puzzleBoard[4][3] = 0;
    puzzleBoard[5][3] = 0;
    puzzleBoard[6][3] = 0;
    puzzleBoard[7][3] = 0;
    puzzleBoard[8][3] = 0;
    puzzleBoard[9][3] = 0;

    //Row 4
    puzzleBoard[1][4] = 0;
    puzzleBoard[2][4] = 0;
    puzzleBoard[3][4] = 0;
    puzzleBoard[4][4] = 0;
    puzzleBoard[5][4] = 0;
    puzzleBoard[6][4] = 0;
    puzzleBoard[7][4] = 0;
    puzzleBoard[8][4] = 0;
    puzzleBoard[9][4] = 0;

    //Row 5
    puzzleBoard[1][5] = 0;
    puzzleBoard[2][5] = 0;
    puzzleBoard[3][5] = 0;
    puzzleBoard[4][5] = 0;
    puzzleBoard[5][5] = 0;
    puzzleBoard[6][5] = 0;
    puzzleBoard[7][5] = 0;
    puzzleBoard[8][5] = 0;
    puzzleBoard[9][5] = 0;

    //Row 6
    puzzleBoard[1][6] = 0;
    puzzleBoard[2][6] = 0;
    puzzleBoard[3][6] = 0;
    puzzleBoard[4][6] = 0;
    puzzleBoard[5][6] = 0;
    puzzleBoard[6][6] = 0;
    puzzleBoard[7][6] = 0;
    puzzleBoard[8][6] = 0;
    puzzleBoard[9][6] = 0;

    //Row 7
    puzzleBoard[1][7] = 0;
    puzzleBoard[2][7] = 0;
    puzzleBoard[3][7] = 0;
    puzzleBoard[4][7] = 0;
    puzzleBoard[5][7] = 0;
    puzzleBoard[6][7] = 0;
    puzzleBoard[7][7] = 0;
    puzzleBoard[8][7] = 0;
    puzzleBoard[9][7] = 0;

    //Row 8
    puzzleBoard[1][8] = 0;
    puzzleBoard[2][8] = 0;
    puzzleBoard[3][8] = 0;
    puzzleBoard[4][8] = 0;
    puzzleBoard[5][8] = 0;
    puzzleBoard[6][8] = 0;
    puzzleBoard[7][8] = 0;
    puzzleBoard[8][8] = 0;
    puzzleBoard[9][8] = 0;

    //Row 9
    puzzleBoard[1][9] = 0;
    puzzleBoard[2][9] = 0;
    puzzleBoard[3][9] = 0;
    puzzleBoard[4][9] = 0;
    puzzleBoard[5][9] = 0;
    puzzleBoard[6][9] = 0;
    puzzleBoard[7][9] = 0;
    puzzleBoard[8][9] = 0;
    puzzleBoard[9][9] = 0;

    int rows = 9;
    int columns = 9;

    int i, j;

    for (i = 1; i < rows; i++){
        for(j = 1; j < columns; j++){
            System.out.print(puzzleBoard[i][j] + " ");

        }
        System.out.println( "" );
    }
}

}

Was it helpful?

Solution

You didn't specify a size for your array.

int[][] puzzleBoard = {}; should be int[][] puzzleBoard = new int[10][10];

There is no need to initialize your array with a for loop or line by line if you're only filling it with 0.

Then arrays are 0 base indexed. So the first element will be at position [0][0] and the last one at position [9][9].

You could also remove your two variables rows and columns.

Finally, you should modify your for loop to start from 0.

for (i = 0; i < puzzleBoard.length; i++){
        for(j = 0; j < puzzleBoard[i].length; j++){
            System.out.print(puzzleBoard[i][j] + " ");    
        }
        System.out.println( "" );
    }

To learn more about arrays in Java, I advise you to read this.

OTHER TIPS

You should initialize the array elements with a for loop as well!

Also, remember, Java arrays are zero based, so the topmost cell would be puzzleboard[0][0]!

You should also specify a size for your array - int[][] puzzleBoard = new int[10][10];

You should use java.util.Arrays.deepToString() to print 2D arrays:

Returns a string representation of the "deep contents" of the specified array. If the array contains other arrays as elements, the string representation contains their contents and so on. This method is designed for converting multidimensional arrays to strings.

The string representation consists of a list of the array's elements, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a space). Elements are converted to strings as by String.valueOf(Object), unless they are themselves arrays.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top