import java.util.Arrays; public class MatrixTransposition { public static int[][] transpose(int[][] matrix) { assert isRectangular(matrix) : "Matrix nicht rechteckig"; if (matrix.length == 0 || matrix[0].length == 0) { return new int[0][]; } int[][] result = new int[matrix[0].length][]; for(int i=0; i < result.length; i++) { result[i] = new int[matrix.length]; } for(int i=0; i < matrix.length; i++) { for(int j=0; j < matrix[i].length; j++) { result[j][i] = matrix[i][j]; } } return result; } private static boolean isRectangular(int[][] matrix) { if (matrix.length == 0) { return true; } // Jetzt gibt es auf jeden Fall einen Index 0 in matrix for(int i=1; i < matrix.length; i++) { if (matrix[i].length != matrix[0].length) { return false; } } return true; } /** * Kurzversion, die vollkommen gen�gt. */ public static void printMatrix(int[][] matrix) { for(int[] row : matrix) { System.out.println(Arrays.toString(row)); } } /** * Luxusvariante, motiviert durchs Forum. */ public static void printMatrix2(int[][] matrix) { // Funktioniert nur, wenn man vorher �berpr�ft hat, dass die Matrix wirklich rechteckig ist String formatStr = computeFormatString(matrix); for(int[] row : matrix) { System.out.print("| "); for(int i=0; i < row.length; i++) { if (i > 0) System.out.print(", "); System.out.format(formatStr, row[i]); } System.out.println(" |"); } } private static String computeFormatString(int[][] matrix) { int max = 1; for(int[] row : matrix) { for (int value : row) { max = Math.max(max, Integer.toString(value).length()); } } String formatStr = "%"+max+"d"; return formatStr; } public static void main(String[] args) { int[][] matrix = {{1,2,3333},{4,5,6}}; printMatrix2(matrix); printMatrix2(transpose(matrix)); } }