2017-05-19 1 views
-2

したがって、私は与えられたサイズの2次元int配列を持っています。この配列の特定の場所に1の値を割り当てたいと思います。別の配列の出力値を使用しています。2次元int配列は単なる値ではなく値の行を出力します

public void printQueens(){ 
    int k = queens[0]; 
    board[1][queens[0]] = 1; 
    System.out.print(queens[1]);} 

k値は、整数値であることを確認するための値です。クイーンの配列は、与えられたサイズの1次元整数配列です。例えば。 {6,7,2,4}

queens = new int[NUM_QUEEN]; 

これはbactracking方法で作成される:

public void backtrack(int row){ 

    for(int i = 0; i<BOARD_SIZE; i++){ 
     if(canPlace(row,i)){ 
      queens[row] = i; 
      if(row == NUM_QUEEN-1){ 
       printQueens();    
      } 
      else{ 
       backtrack(row+1); 
      } 

     } 
    } 
} 

私は期待していた出力が1行クイーンズ[0]の列の一つです(この場合、7)。出力は、この1行目にあるものの行です:

0 0 0 0 0 0 0 0 
    1 1 1 1 1 1 1 1 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 

私が代わりの女王で、7、言って置く場合は[0]出力が正しい:

0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 1 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 
    0 0 0 0 0 0 0 0 

である理由だから私の質問ですこれは起こっている?通常の明示的整数が機能する場合、なぜ暗黙の整数はありませんか?

+2

'board [1] [k] = 1;'行全体を更新できない可能性があります。 [mcve]を投稿してください。 – shmosel

+0

確かに他の方法を検証することはできません。たぶんスクリーンショット? – conk

+0

いいえ、しないでください。問題を再現するのに必要な最小限のコードを含めてください。詳細については、上のリンクを参照してください。 – shmosel

答えて

1

まあ...私はあなたの問題を理解しようとしました。これは、私が問題を理解していれば、あなたがしたいことをするコードの提案です。

public static void main(String[] args) { 

    int boardSize = 8; 
    int queens[] = {6, 7, 2, 4}; 

    int board[][] = {{0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}, 
         {0, 0, 0, 0 , 0, 0, 0, 0}}; 

    int k = queens[0]; 
    board[1][k] = 1; 

    for (int row = 0; row < boardSize; row++) { 
     for (int col = 0; col < boardSize; col++) { 
      System.out.print(board[row][col] + " "); 
     } 
     System.out.println(); 
    } 
} 

出力は女王の配列がリセットされていませんでした

0 0 0 0 0 0 0 0 
0 0 0 0 0 0 1 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 
+0

答えをありがとう!私は文字通りあなたの正確なコードを試してみました。はっきりと何かが欠けている!私は誰かがこの特定のコードに関する特定の "不具合"を知っているかもしれないと考えました。しかし、ありがとう! – conk

+0

お使いの環境(OS、IDE、JDK)は何ですか? – tnas

+0

JDK。私はちょうどウィンドウのコマンドプロンプトでそれを実行しています – conk

0

です。だから私はクイーン配列を使ったとき、再帰のために各値を重ね合わせるだけでした。

関連する問題