I need a sudoku in Java, my friend wrote this code but I can put to run, could you check if have some error?
import java.util.*;
import java.io.*;
public class Sudoku {
Scanner stdin;
int grid[][];
int getNextInteger(Scanner file) {
String next;
while (file.hasNext()) {
next = file.next();
if (next.equals(".")) {
return 0;
}
try {
return Integer.parseInt(next);
} catch (NumberFormatException e) {
continue;
}
}
return 0;
}
void readGrid(String filename) {
grid = new int[9][9];
try {
Scanner file = new Scanner(new File(filename));
for (int x = 0; x < 9; x++) {
for (int y = 0; y < 9; y++) {
grid[x][y] = getNextInteger(file);
}
}
} catch (FileNotFoundException e) {
System.out.println("http://www.youtube.com/watch?v=EK2tWVj6lXw");
}
}
void displayGrid() {
System.out.println("-------------------------");
for (int x = 0; x < 9; x++) {
System.out.print("| ");
for (int y = 0; y < 9; y++) {
if (grid[x][y] > 0) {
System.out.print(grid[x][y] + " ");
} else {
System.out.print(". ");
}
if ((y + 1) % 3 == 0) {
System.out.print("| ");
}
}
System.out.println("");
if ((x + 1) % 3 == 0) {
System.out.println("-------------------------");
}
}
}
boolean givesRowConflict(int x, int y, int n) {
for (int i = 0; i < 9; i++) {
if (!(i == x)) {
if (n == grid[i][y]) {
return true;
}
}
}
return false;
}
boolean givesColConflict(int x, int y, int n) {
for (int i = 0; i < 9; i++) {
if (!(i == y)) {
if (n == grid[x][i]) {
return true;
}
}
}
return false;
}
boolean givesBoxConflict(int x, int y, int n) {
int x0 = x - (x % 3);
int y0 = y - (y % 3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (!((x0 + i == x) && (y0 + j == y))) {
if (n == grid[x0 + i][y0 + j]) {
return true;
}
}
}
}
return false;
}
boolean givesConflict(int x, int y, int n){
return (givesRowConflict(x, y, n) || givesColConflict(x, y, n) || givesBoxConflict(x, y, n));
}
int[] searchZero() {
for (int x = 0; x < 9; x++) {
for (int y = 0; y < 9; y++) {
if (grid[x][y] == 0) {
return new int[]{x, y};
}
}
}
return new int[]{-1, -1};
}
boolean tryToSolve(){
int[] xy;
xy = searchZero();
int xempty = xy[0];
int yempty = xy[1];
if (xempty == -1 || yempty == -1){
return true;
}
for (int n = 1; n <= 9; n++){
if (!givesConflict(xempty, yempty, n)){
grid[xempty][yempty] = n;
boolean test = tryToSolve();
if (test){
return true;
}
}
}
return false;
}
void execute() {
stdin = new Scanner(System.in);
readGrid(stdin.next());
displayGrid();
}
public static void main(String[] args) {
new Sudoku().execute();
}
}
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequ
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequat, ultrices ac magnaUnlock access to this and over
10,000 step-by-step explanations
Have an account? Log In
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequat, ultrices ac magna. Fusce dui lectus, congue vel laoreet ac, dictum vitae odio. Donec aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam lacinia pulv