Questions & AnswersJava Programming

I need  a sudoku in Java, my friend wrote this code but I can put...

Question
Answered step-by-step
Asked by SuperCloverOpossum30 on coursehero.com

I need  a sudoku in Java, my friend wrote this code but I can put...

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();
   }
}
 

Answer & Explanation

Solved by verified expert
Answered by JanarthananD on coursehero.com

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 magna
CliffsNotes Logo

Unlock access to this and over
10,000 step-by-step explanations

Unlock Explanation

Have an account? Log In

<p>sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequ</p>sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequat, ultrices ac magna

Step-by-step explanation

  1. sectsectetursectetur adipiscing elit. Nam lacinia pulvinar tortossectetur adipiscing elit.
  2. sectsectetur adsectetur adipiscing elit. Nam lacinia pulvinar torto
  3. sectsectetur adipiscsesectetur adipiscsectetsectetur adipiscsectetur adipiscing elit. Nam lacinia pulvissectetur adipiscing esectetsectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapssectetur adipiscing elit. Nam lacinia pusectetse
  4. sectsectetur adipsectetur adipiscing elit. Nam lacinia pulvissectetur adipiscing esectetsectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pell
  5. sectsectetur asectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ansectetsectetur adipiscing elit. Nam lacinia pulvsecteturs
  6. sectsectetur asectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequat, ultrices ac magna. Fusce duisectetur asectetur 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 pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus asectesectetur 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, disectsectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellen
  7. sectsectsectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellensectetursectesectetur adsectetur adipiscing elit. Nam lacinia pulvinar tortor nec fsectetur asectetur adipiscing elit. Nam lacinia psectetur asectetursectsectetur adipiscing elit. Nam lacinia pulvinasectetur asectetursectesectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pell

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

Get unstuck with a CliffsNotes subscription

Example CliffsNotes Question and Answer
Unlock every step-by-step explanation, download literature note PDFs, plus more.Get Access

Related Q&A