2010-11-18 4 views
0
import java.util.Scanner; 
public class SudokuPermuter { 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     System.out.println("Welcome to Sudoku Permuter.\n"); 

     int [] [] sudoku = new int[] [] { 
      { 0, 8, 0, 4, 0, 2, 0, 6, 0 }, 
      { 0, 3, 4, 0, 0, 0, 9, 1, 0 }, 
      { 9, 6, 0, 0, 0, 0, 0, 8, 4 }, 
      { 0, 0, 0, 2, 1, 6, 0, 0, 0 }, 
      { 2, 0, 0, 0, 0, 9, 6, 0, 0 }, 
      { 0, 1, 0, 3, 5, 7, 0, 0, 8 }, 
      { 8, 4, 0, 0, 0, 0, 0, 7, 5 }, 
      { 0, 2, 6, 0, 0, 0, 1, 3, 0 }, 
      { 0, 9, 0, 7, 0, 1, 0, 4, 0 } 
     } 

     for (int row = 0; row < 10; row++) { 
      for (int column = 0; column < 10; column++) { 
       System.out.print(sudoku[row] [column] + " "); 
      } 
      System.out.println(); 
     } 
    } 
} 

私は数独パズルを入力しようとしているが、プリントアウトする 、それが最後の行の後に予想されるセミコロンがあると言う{ 0, 9, 0, 7, 0, 1, 0, 4, 0 }2次元配列エラーをハードコーディングしていますか?

しかし、私は中にセミコロンを入れたときに、それが終わるとブラケットを取りメソッド全体がメソッドをargsします。どうしてか分かりません。

答えて

1
int [] [] sudoku = new int[] [] { 
     { 0, 8, 0, 4, 0, 2, 0, 6, 0 }, 
     { 0, 3, 4, 0, 0, 0, 9, 1, 0 }, 
     { 9, 6, 0, 0, 0, 0, 0, 8, 4 }, 
     { 0, 0, 0, 2, 1, 6, 0, 0, 0 }, 
     { 2, 0, 0, 0, 0, 9, 6, 0, 0 }, 
     { 0, 1, 0, 3, 5, 7, 0, 0, 8 }, 
     { 8, 4, 0, 0, 0, 0, 0, 7, 5 }, 
     { 0, 2, 6, 0, 0, 0, 1, 3, 0 }, 
     { 0, 9, 0, 7, 0, 1, 0, 4, 0 } 
    }; 
3

あなたは、第二の閉じ括弧(代入文を最後まで)の後にセミコロンが必要になります。

int [] [] sudoku = new int[] [] { 
     { 0, 8, 0, 4, 0, 2, 0, 6, 0 }, 
     { 0, 3, 4, 0, 0, 0, 9, 1, 0 }, 
     { 9, 6, 0, 0, 0, 0, 0, 8, 4 }, 
     { 0, 0, 0, 2, 1, 6, 0, 0, 0 }, 
     { 2, 0, 0, 0, 0, 9, 6, 0, 0 }, 
     { 0, 1, 0, 3, 5, 7, 0, 0, 8 }, 
     { 8, 4, 0, 0, 0, 0, 0, 7, 5 }, 
     { 0, 2, 6, 0, 0, 0, 1, 3, 0 }, 
     { 0, 9, 0, 7, 0, 1, 0, 4, 0 } 
    } ; 
1

コンストラクタの必要はありません。それは

int[][] sudoku = { 
    { 0, 8, 0, 4, 0, 2, 0, 6, 0 }, 
    { 0, 3, 4, 0, 0, 0, 9, 1, 0 }, 
    { 9, 6, 0, 0, 0, 0, 0, 8, 4 }, 
    { 0, 0, 0, 2, 1, 6, 0, 0, 0 }, 
    { 2, 0, 0, 0, 0, 9, 6, 0, 0 }, 
    { 0, 1, 0, 3, 5, 7, 0, 0, 8 }, 
    { 8, 4, 0, 0, 0, 0, 0, 7, 5 }, 
    { 0, 2, 6, 0, 0, 0, 1, 3, 0 }, 
    { 0, 9, 0, 7, 0, 1, 0, 4, 0 } 
} ; 
0

はまたあなたのアレイは、私はあなたがすべきだと思うあなたは、配列を大きくするか、10

0

の9 inestedにループを変更する必要が

例外は、ArrayIndexOutOfBoundsExceptionを投げる...このようにインスタンス化することができますテーブルを手で塗りつぶすときは、 数独を表現するより便利な方法を選択してください。 文字列の配列のように、後で分割するのは、たとえば塗りつぶしに便利です。
(非常に単純な)変換の後、配列があります。

(まあ、私はここにJavascriptの表記法を使用し、変換は難しいことではありません。)

var oneSudokuStrings = []; 
var sl=0; 
oneSudokuStrings [sl++] = " O 8 0 4 0 2 0 6 0 "; 
oneSudokuStrings [sl++] = " 0 3 4 0 0 0 9 1 0 "; 
oneSudokuStrings [sl++] = " 9 6 0 0 0 0 0 8 4 "; 
oneSudokuStrings [sl++] = " 0 0 0 2 1 6 0 0 0 "; 
oneSudokuStrings [sl++] = " 2 0 0 0 0 9 6 0 0 "; 
oneSudokuStrings [sl++] = " 0 1 0 3 5 7 0 0 8 "; 
oneSudokuStrings [sl++] = " 8 4 0 0 0 0 0 7 5 "; 
oneSudokuStrings [sl++] = " 0 2 6 0 0 0 1 3 0 "; 
oneSudokuStrings [sl++] = " 0 9 0 7 0 1 0 4 0 "; 

var oneSudoku = []; 
for (var i=0; i<oneSudokuStrings.length; i++) { 
    oneSudoku[i]=oneSudokuStrings[i].match(/[^ ]+/g); 
}