現在、Javaで数独のコーディングを行なっています。
自分の中では、ひと段落ついたと思って、実行してみると、回答前の状況が表示されるのみで、解答後の表示がない状態です…。
また、eclipseを用いているのですが、実行時のエラーコードも表示されずで問題点がわからないお状態になってしまっています。
何度見直しても、わからなく、困っておりますので、ご教授いただけないでしょうか?
また、他にこうした方がいいよ、ということがあれば、そちらもご教授いただけますと幸いです。
Java
1public class sudoku { 2 public static void solve(int[][]data) { 3 boolean tf = false; 4 do { 5 for(int r = 0; r < 9; r++) 6 for(int c = 0; c < 9; c++) { 7 int[] num = {0,0,0,0,0,0,0,0,0}; 8 if(data[r][c] == 0) { 9 int count = 0; 10 int renew = 0; 11 int sr = r / 3; 12 int sc = c / 3; 13 for(int a = 0; a < 9; a++) { 14 if(data[r][a] != 0) 15 num[data[r][a] -1] = 1; 16 } 17 for(int a = 0; a < 9; a++) { 18 if(data[a][c] != 0) 19 num[data[a][c] -1] = 1; 20 } 21 for(int s = 3 * sr; s < 3 * sr + 3; s++) { 22 for(int b = 3 * sc; b < 3 * sc + 3; b++) { 23 if(data[s][b] != 0) 24 num[data[s][b] -1] = 1; 25 } 26 } 27 for(int a = 0; a < 9 ; a++) { 28 if(num[a] == 1) 29 count++; 30 else if(num[a] == 0) 31 renew = a + 1; 32 } 33 if(count == 8) { 34 data[r][c] = renew; 35 } 36 } 37 } 38 int count = 0; 39 for(int r = 0; r < 9; r++) 40 for(int c = 0; c < 9; c++) { 41 if(data[r][c] != 0) 42 count++; 43 } 44 if(count == 81) 45 tf = true; 46 } while(!(tf)); 47 } 48 49 public static void print(int[][] data) { 50 for(int i = 0; i < 9; i++) { 51 for(int j = 0; j < 9; j++) { 52 if(data[i][j] != 0) { 53 System.out.print(" " + data[i][j] + " "); 54 } else { 55 System.out.print("( )"); 56 } 57 } 58 System.out.println(); 59 } 60 } 61 62 public static void main(String[] args) { 63 int[][] data = { 64 {0,0,0,0,0,3,0,0,1}, 65 {7,5,3,0,1,0,2,0,0}, 66 {1,0,0,6,0,0,3,7,0}, 67 {9,0,0,0,7,5,0,0,0}, 68 {0,0,0,0,0,0,0,3,7}, 69 {0,0,0,8,0,0,6,0,0}, 70 {2,9,0,0,3,0,4,0,0}, 71 {0,0,7,1,0,4,0,6,0}, 72 {0,4,0,0,9,0,0,5,0}}; 73 print(data); 74 System.out.println("---------------------------"); 75 solve(data); 76 print(data); 77 } 78}
( )( )( )( )( ) 3 ( )( ) 1 7 5 3 ( ) 1 ( ) 2 ( )( ) 1 ( )( ) 6 ( )( ) 3 7 ( ) 9 ( )( )( ) 7 5 ( )( )( ) ( )( )( )( )( )( )( ) 3 7 ( )( )( ) 8 ( )( ) 6 ( )( ) 2 9 ( )( ) 3 ( ) 4 ( )( ) ( )( ) 7 1 ( ) 4 ( ) 6 ( ) ( ) 4 ( )( ) 9 ( )( ) 5 ( ) --------------------------- //こちらにsolve実行結果が表記されない状態です。
回答4件
あなたの回答
tips
プレビュー