static int[][] transponiere(int[][] m){
//Prüft ob eine Matrix vorhanden ist
if(m == null){
throw new IllegalArgumentException("Keine Matrix vorhanden!!");
}
//Bestimmt, ob es leere Zeilen gibt
for(int zaehler=0; zaehler<m.length; zaehler++) {
if(m[zaehler].length == 0){
throw new IllegalArgumentException("Es fehlt mindestens eine Zeile!!");
}
}
//Prüft ob es Lücken in den Zeilen gibt
int maxLineValue = m[0].length;
for(int i = 0; i < m.length; i++){
for(int j = 0; j < m[i].length; j++){
if(maxLineValue < m[i].length || maxLineValue > m[i].length){
throw new IllegalArgumentException("Matrix ist nicht rechteckig!!");
}
}
}
//Transponieren der Matrix (vertauschen von Zeilen und Spalten)
int zeilen = m.length;
int spalten = m[0].length;
int[][] matrix = new int[spalten][zeilen];
for(int i = 0; i < zeilen; i++){
for(int j = 0; j < spalten; j++){
matrix[j][i] = m[i][j];
}
}
return matrix;
}
/**
* main
*/
public static void main(String[] args){
int[][] m1 = {{11,12,13,14,15},{21,22,23,24,25},{31,32,33,34,35}};
int[][] m2 = {{11,12},{21,22},{31,32},{41,42}};
int[][] m3 = {{11}};
int[][] m4 = {{}};
int[][] m5 = {{11,12,13,14,15},{21,22,23,24},{31,32,33,34,35}};
int[][] m6 = {{11,12},{21,22},null,{41,42}};
int[][] m7 = null;
System.out.println("m1 normal:");
print(m1);
System.out.println("m1 transponiert:");
print(transponiere(m1));
System.out.println("m2 normal:");
print(m2);
System.out.println("m2 transponiert:");
print(transponiere(m2));
System.out.println("m3 normal:");
print(m3);
System.out.println("m3 transponiert:");
print(transponiere(m3));
System.out.println("m4 normal:");
print(m4);
System.out.println("m4 transponiert:");
print(transponiere(m4));
System.out.println("m5 normal:");
print(m5);
System.out.println("m5 transponiert:");
print(transponiere(m5));
System.out.println("m6 normal:");
print(m6);
System.out.println("m6 transponiert:");
print(transponiere(m6));
System.out.println("m7 normal:");
print(m7);
System.out.println("m7 transponiert:");
print(transponiere(m7));
}
}