У меня есть многомерный массив на основе строк:
/** [row][column]. */
public int[][] tiles;
Я хотел бы преобразовать этот массив в массив на основе столбцов, как показано ниже:
/** [column][row]. */
public int[][] tiles;
... Но я действительно не не знаю, с чего начать
import java.util.*;
public class TestClass {
public static void main(String args[] ) throws Exception {
Scanner in=new Scanner(System.in);
int isize=in.nextInt();
int jsize=in.nextInt();
int arr[][]=new int[isize][jsize];
int array[][]=new int[jsize][isize];
for(int i=0;i<isize;i++) {
for(int j=0;j<jsize;j++) {
arr[i][j]=in.nextInt();
}
System.out.println("\n");
}
for(int n=0;n<arr[0].length;n++) {
for(int m=0;m<arr.length;m++) {
array[n][m]=arr[m][n];
System.out.print(array[n][m]+" ");
}
System.out.print("\n");
}
}
}
Используйте эту функцию (строка замены интервалом при необходимости). Это берет матрицу в качестве массива строк и возвращает новую матрицу, которая является транспонированием. Это проверяет на пограничный случай пустого массива, также. Никакая печать.
private String[][] transposeTable(String[][] table) {
// Transpose of empty table is empty table
if (table.length < 1) {
return table;
}
// Table isn't empty
int nRows = table.length;
int nCols = table[0].length;
String[][] transpose = new String[nCols][nRows];
// Do the transpose
for (int i = 0; i < nRows; i++) {
for (int j = 0; j < nCols; j++) {
transpose[j][i] = table[i][j];
}
}
return transpose;
}