I am having trouble initializing a parameterless constructor with a defined game. Somehow it keeps on returning null
if I use a getter method to return the game. Can anyone tell me what would be the best method to initialize the game?
Currently I'm calling a method from within another class which has a static method but it doesn't seem to work because it gives a null
value if I get the game.
This is how I this game to be:
{{7,8,1,0,0,4,0,0,6},
{2,0,9,3,6,0,1,0,0},
{6,0,0,0,9,0,8,0,0},
{0,0,0,0,3,5,0,0,0},
{3,5,0,0,0,0,0,1,9},
{0,0,0,4,2,0,0,0,0},
{0,0,3,0,1,0,0,0,8},
{0,0,7,0,8,3,4,0,1},
{9,0,0,6,开发者_如何学C0,0,5,7,3}},
public class SudokuPlayer
{
private int [][] game;
public enum CellState { EMPTY, FIXED, PLAYED };
private CellState[][] gamestate;
private static final int GRID_SIZE=9;
public SudokuPlayer()
{
int[][] copy= SudokuGames.getGame(4);
int size = copy.length;
int[][] game = new int[GRID_SIZE][GRID_SIZE];
for ( int row = 0; row < size; row++)
{
for ( int col =0; col < size; col++)
{
game[row][col] = copy[row][col];
}
}
}
public int[][] getGame()
{
return game;
}
}
here is the method from a diferent class im calling:
public class SudokuGames {
public static final int [][][] GAMES = {
// Game 0 VE - DEFAULT 30 squares filled
{{5,3,0,0,7,0,0,0,0},
{6,0,0,1,9,5,0,0,0},
{0,9,8,0,0,0,0,6,0},
{8,0,0,0,6,0,0,0,3},
{4,0,0,8,0,3,0,0,1},
{7,0,0,0,2,0,0,0,6},
{0,6,0,0,0,0,2,8,0},
{0,0,0,4,1,9,0,0,5},
{0,0,0,0,8,0,0,7,9}},
// Game 1 VE
{{8,0,1,0,3,7,0,5,6},
{0,0,0,9,0,0,0,0,7},
{6,0,3,0,1,2,0,9,0},
{0,2,0,0,0,0,7,0,3},
{3,0,0,0,2,0,0,0,9},
{1,0,9,0,0,0,0,8,0},
{0,3,0,2,7,0,4,0,1},
{7,0,0,0,0,6,0,0,0},
{5,6,0,1,9,0,3,0,8}},
// Game 2 VE
{{0,9,0,0,3,0,1,4,0},
{7,0,3,0,0,4,0,0,8},
{5,0,0,6,0,7,0,2,0},
{0,7,4,5,0,2,9,0,0},
{1,0,0,0,0,0,0,0,2},
{0,0,9,1,0,8,4,6,0},
{0,5,0,7,0,9,0,0,6},
{4,0,0,2,0,0,5,0,1},
{0,8,6,0,5,0,0,7,0}},
// Game 3 VE
{{0,0,9,7,3,0,5,2,6},
{0,0,5,0,2,0,8,0,0},
{6,0,8,0,0,0,0,4,7},
{0,0,0,0,0,9,0,6,2},
{0,4,0,6,0,3,0,8,0},
{8,9,0,5,0,0,0,0,0},
{2,6,0,0,0,0,1,0,8},
{0,0,7,0,1,0,6,0,0},
{9,5,1,0,6,4,2,0,0}},
// Game 4 VE
{{7,8,1,0,0,4,0,0,6},
{2,0,9,3,6,0,1,0,0},
{6,0,0,0,9,0,8,0,0},
{0,0,0,0,3,5,0,0,0},
{3,5,0,0,0,0,0,1,9},
{0,0,0,4,2,0,0,0,0},
{0,0,3,0,1,0,0,0,8},
{0,0,7,0,8,3,4,0,1},
{9,0,0,6,0,0,5,7,3}},
// Game 5 E
{{0,0,0,9,1,0,0,0,2},
{5,0,0,0,0,0,0,0,0},
{3,0,0,5,4,0,0,6,8},
{0,4,2,7,0,0,3,0,5},
{0,0,3,4,5,6,2,0,0},
{1,0,9,0,0,8,7,4,0},
{8,1,0,0,7,5,0,0,4},
{0,0,0,0,0,0,0,0,1},
{9,0,0,0,8,4,0,0,0}},
// Game 6 E
{{0,0,0,1,0,7,0,9,0},
{0,0,0,4,9,0,3,0,0},
{6,0,0,0,3,0,4,1,0},
{4,0,5,0,0,0,0,3,0},
{8,2,0,0,0,0,0,5,4},
{0,3,0,0,0,0,2,0,6},
{0,1,4,0,7,0,0,0,5},
{0,0,8,0,2,5,0,0,0},
{0,6,0,8,0,1,0,0,0}},
// Game 7 E
{{0,0,2,8,0,7,5,0,0},
{6,0,0,0,0,0,0,0,4},
{0,8,0,0,6,0,0,7,0},
{1,3,0,4,0,9,0,2,5},
{0,0,0,0,0,0,0,0,0},
{4,5,0,7,0,1,0,6,8},
{0,6,0,0,3,0,0,9,0},
{5,0,0,0,0,0,0,0,7},
{0,0,1,6,0,4,2,0,0}}
}; //End
/**
* getGame(int gameID) returns a a Sudoku game as int [][]
* as specified by the gameID. If the gameID is outside the
* list of possible games, null is returned.
* @param gameID number of game to be played
* @return int[][] a game to be played
*/
public static int [][] getGame (int gameID) {
/** A little dangerous. A copy of the reference to the original array
* is returned. Not a copy of the array.
**/
if (gameID >= 0 && gameID < GAMES.length) {
return GAMES[gameID];
}
else {
return null;
}
}
}
You are hiding the instance variable.
Change the following
int[][] game = new int[GRID_SIZE][GRID_SIZE];
to
game = new int[GRID_SIZE][GRID_SIZE];
精彩评论