public void solve(int I, int J) { if (!STOP) { //terminating condition if (J == 9) { I++; J = 0; if (I == 9) { if (main.numSolutions < 999) { main.numSolutions++; main.numSolutionsLabel.setText("# of Solutions: "+(main.numSolutions+1)); for (int i = 0; i < 9; i++) for (int j = 0; j < 9; j++) main.solutionBoard[main.numSolutions][9*i+j] = board[i][j]; //store solution info to be displayed later } else { main.numSolutions++; main.numSolutionsLabel.setText("# of Solutions: "+(main.numSolutions+1)); } return; } } if (board[I][J] == -1) //empty space { int testVal = 1; while (testVal < 10)//find value to pass in { board[I][J] = testVal; if (main.watchBox.getState()) main.field[I][J].setText(" "+testVal); if (isValid()) solve(I,J+1); //try to solve with this value testVal++; //try a different value } board[I][J] = -1; if (main.watchBox.getState()) main.field[I][J].setText(""); return; } else solve(I,J+1); //go to next empty square } }