2017-06-08 13 views
-1

2D配列の列と行を交換したい。行と列を2次元配列に切り替える

私の問題は、変数 "oldField"にoldFieldを保存したいということです。変数とは、newFieldと同じオブジェクトを指していると思います。

Idは、あなたがそれに続いint型などのプリミティブ値の新しい配列とコンテンツのコピーを持つ1次元配列にコピーすると、私は

public int[][] swapMatrix(int[][] pField) { // swaps the rows and columns in 
              // a Field 
    int[][] oldField = pField.clone(); 
    int[][] newField = pField.clone(); 
    for (int i = 0; i < newField.length; i++) { 
     for (int j = (newField.length - 1); j >= 0; j--) { 
      newField[i][(newField.length - 1) - j] = oldField[j][i]; 
     } 
    } 
    return newField; 

} 
+2

可能な複製(https://stackoverflow.com/questions/42519/how-do-あなたは2次元配列を回転させます) – xenteros

答えて

0

独立変数オールドフィールドを保存することができます方法を知っているしたいと何の言及はありません。

int row1[] = {0,1,2,3}; 
    int row2[] = row1.clone(); 
    row2[0] = 10; 
    System.out.println(row1[0] == row2[0]); // prints false 

が、2次元配列のコンテンツは、オブジェクトが、あなたが深いコピーを行う必要があり、要件が.FORある場合にのみ、浅いコピーが新しいコンテンツを作成していないオブジェクトとクローン方法です。

int table1[][]={{0,1,2,3},{11,12,13,14}}; 
    int table2[][] = table1.clone(); 
    table2[0][0] = 100; 
    System.out.println(table1[0][0] == table2[0][0]); //prints true 
0

このコードはあなたの問題を解決:[?あなたはどのように2次元配列を回転させない]の

public class SwapRowsAndColumns { 

    public static void main(String[] args) { 

     int[][] someMatrix = new int[2][3]; 

     someMatrix[0][0] = 1; 
     someMatrix[0][1] = 2; 
     someMatrix[0][2] = 3; 

     someMatrix[1][0] = 4; 
     someMatrix[1][1] = 5; 
     someMatrix[1][2] = 6; 

     printMatrix(someMatrix); 
     int[][] invertedMatrix = swapMatrix(someMatrix); 
     printMatrix(invertedMatrix); 

    } 

    private static int[][] swapMatrix(int[][] pField) { 

     int originalTotalRows = pField.length; 
     int originalTotalColumns = pField[0].length; 

     int[][] newMatrix = new int[originalTotalColumns][originalTotalRows]; 

     for(int i=0; i< originalTotalRows; i++){ 
      for(int j=0; j < originalTotalColumns; j++){ 
       newMatrix[j][i] = pField[i][j]; 
      } 
     } 
     return newMatrix; 
    } 

    private static void printMatrix(int[][] matrix){ 
     int totalRows = matrix.length; 
     int totalColumns = matrix[0].length; 

     for(int i=0; i< totalRows; i++){ 
      for(int j=0; j< totalColumns; j++){ 
       System.out.print(matrix[i][j] + " "); 
      } 
      System.out.println(""); 
     } 
    } 
} 
+0

ty、(){...}の2倍の行列をコピーしました –