編輯:謝謝大家誰幫助我瞭解我必須做什麼和問題是什麼。重新分配二維數組的值
SudokuStuff接口
public interface SudokuStuff
{
int[][] sudokuGrid = new int[][] {{2,4,0,6,8,0,3,0,0},
{0,0,0,0,0,0,9,0,0},
{6,5,0,0,1,0,0,8,7},
{0,0,0,0,0,7,0,9,8},
{9,3,2,5,0,8,7,1,4},
{7,1,0,4,0,0,0,0,0},
{4,9,0,0,7,0,0,2,5},
{0,0,5,0,0,0,0,0,0},
{0,0,1,0,4,5,0,7,3}};
void addNumber(int x, int y, int value);
void removeNumber(int x, int y);
void resetGrid();
void drawGrid();
}
數獨類
public class Sudoku implements SudokuStuff{
public void drawGrid(){
System.out.println(" ----- ----- ----- ");
for(int i = 0; i < 9; i++){
if(i==3||i==6){
System.out.println(" ----- ----- ----- ");
}
for(int j = 0; j < 9; j++){
if(j==0||j==3||j==6){
System.out.print(" |");
}
if(sudokuGrid[i][j] != 0){
System.out.print(" "+sudokuGrid[i][j]);
} else{
System.out.print(" ");
}
if(j==8){
System.out.print(" |");
}
}
System.out.println();
}
System.out.println(" ----- ----- ----- ");
}
public void addNumber(int x, int y, int value){
if(x>9||x<1||y>9||y<1||value>9||value<0){
System.out.println("Bad Input");
}else{
sudokuGrid[x-1][y-1] = value;
}
drawGrid();
}
public void removeNumber(int x, int y){
if(x>9||x<1||y>9||y<1){
System.out.println("Bad Input");
}else{
sudokuGrid[x-1][y-1] = 0;
}
drawGrid();
}
public void resetGrid(){
sudokuGrid = {{2,4,0,6,8,0,3,0,0},
{0,0,0,0,0,0,9,0,0},
{6,5,0,0,1,0,0,8,7},
{0,0,0,0,0,7,0,9,8},
{9,3,2,5,0,8,7,1,4},
{7,1,0,4,0,0,0,0,0},
{4,9,0,0,7,0,0,2,5},
{0,0,5,0,0,0,0,0,0},
{0,0,1,0,4,5,0,7,3}};
drawGrid();
}
}
所以讓我的問題,在SudokuStuff我有一個2D與預設值,在數獨我有一個resetGrid方法不工作。正如你所看到的,我希望它將網格重置爲原始形式。有關這樣做的任何建議?我現在擁有的表達錯誤非法開始。
如果你知道答案,還有一個附註,有沒有什麼辦法可以在交互窗格中從SudokuStuff的Sudoku中運行方法。這是我的中期練習題,並且仍然與界面事物混淆。
任何幫助將不勝感激,如果我不立即回答它的可能是因爲我昏昏欲睡,因爲它晚了很晚在這裏。謝謝。
'SodokuStuff'有什麼意義?你計劃有多種Sodoku的實現嗎? –
你知道在接口中聲明的字段是靜態的嗎?換句話說,它們是常量。 – Pshemo
@Pshemo那麼我怎麼能改變他們與我的add/removeNumber方法,我不懷疑你,我只是不知道。 – Kevin