2013-10-23 36 views
1

我目前正在研究一個小項目。我正在爲L遊戲寫一個簡單的java程序。我需要編寫一個方法來移動4x4數組的內容。該方法將取(row, column)參數。內容將相應地移動。Java:如何移動多維數組的內容?

{ 'x',' ',' ',' ' }, 

{ 'x',' ',' ',' ' }, 

{ 'x','x',' ',' ' }, 

{ ' ',' ',' ',' ' } 

移動(0,2) --->

{ ' ',' ','x',' ' }, 

{ ' ',' ','x',' ' }, 

{ ' ',' ','x','x' }, 

{ ' ',' ',' ',' ' } 

我不知道從哪裏開始。我非常感謝這方面的幫助。 非常感謝您的幫助。

+3

從標準一維數組開始。從那裏很容易,只需循環遍歷2D陣列中的每個一維數組。 –

+0

你確定'(0,2)'的預期結果將會變成這樣?! – SudoRahul

+0

創建一個新的二維數組,將第一個數組中的數據與其中的(行,列)參數相對應的偏移量放入其中。嘗試一下,如果你撞牆,來告訴我們。 –

回答

1

你的方法應該是這個樣子

char[][] array = new char[4][4]; 

public static void move(row, column){ 
    for (int i = 0, i < 4; i++) { 
     for (int j = 0; j < 4; j++){ 
      if (array[i][j] != null) { 
       // add rows and column accordingly 
       array[i + row][j + column] = array[i][j]; 
       array[i][j] = null; 
      } 
     } 
    } 
} 

這是考慮到只有一個x每行,而你的情況,有些行有兩個。我會讓你找出一個。

+0

另一個用戶問同樣的問題,他們稱之爲「分配」(大概是家庭作業)。如果他們要求任何更多的幫助,你可能想要阻止代碼。 http://stackoverflow.com/questions/19532403/copying-a-2d-non-space-array-to-another – alexroussos

+0

他刪除了這個問題。我仍然沒有我想要的正確答案。你有什麼可以幫忙的嗎? – user2741226

+0

你需要什麼幫助?此外,將您的代碼放在帖子的底部。並詳細解釋你在哪裏遇到問題。 –

1
int moverow = 0; 
    int moveCol = 2; 

    for(int i = 0; i <=3; i++){ 
     for(int j = 0; j <=3; j++){ 
      int currentValue = board[i][j]; 
      //shifting value 
      int shiftX = i + moverow; 
      int shiftY = j + moveCol; 
      // discarding the value if index overflows 
      if(shiftX > 3 || shiftY > 3){ 

       // setting initial value on the original index. 
       board[i][j] = 0; 
       break; 
      }else{ 
       board[shiftX][shiftY] = currentValue; 
       // setting initial value on the original index. 
       board[i][j] = 0; 
      } 
     } 
    }