codice:
public class Prova {
public static void main(String[] args) {
String[][] mat1 = {
{ "A", "B", "C" },
{ "D", "E", "F" },
{ "G", "H", "I" },
};
String[][] mat2 = {
{ "A", "B", "C", "D", "E" },
{ "F", "G", "H", "I", "L" },
{ "M", "N", "O", "P", "Q" },
};
stampaPerDiagonali(mat1);
stampaPerDiagonali(mat2);
}
public static void stampaPerDiagonali(String[][] mat) {
int numRighe = mat.length;
int numColonne = mat[0].length;
int righeTeoriche = numRighe + numColonne - 1;
for (int rt = 0; rt < righeTeoriche; rt++) {
int r, c;
if (rt < numRighe) {
r = rt;
c = 0;
} else {
r = numRighe - 1;
c = rt - numRighe + 1;
}
while (r >= 0 && c < numColonne) {
System.out.print(mat[r][c] + " ");
r--;
c++;
}
}
System.out.println();
}
}
E come vedi funziona per qualunque tipo di matrice .... quadrata o rettangolare che sia!
P.S. E ho impiegato una manciata di minuti a scriverlo e provarlo ...