2017-05-19 53 views
-2

所以我有一個給定大小的二維int數組。我想爲這個數組中的某個地方賦值1。我正在使用另一個數組的輸出值。像這樣:二維int數組打印值的行而不是一個

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

k值是在那裏,以確保它是一個整數值。女王的數組是給定大小的一維整數數組。例如。 {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); 
      } 

     } 
    } 
} 

我期待的輸出是在第一行和王后[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。我只是在Windows的命令提示符下運行它 – conk

0

女王的數組從未被重置。因此,當我使用皇后數組時,它只是將每個值疊加在一起,因爲遞歸。