Ошибка
Второй вложенный цикл
Вы получаете ошибку indexoutofbounds для матрицы m на n, поскольку ваш второй вложенный цикл строго зависит от размера столбцов, подразумевая, что для негодля бесперебойной работы матрица должна быть квадратной:
for(int i=0; i<col; i++)
{
for(int j=0; j<col; j++)
{
System.out.print(matriz[i][j]+" ");
}
System.out.println("");
}
Ваш случай ошибки
n> m error
Ошибка произойдет, когда n> m.Если количество столбцов больше, чем количество строк (n> m), вы пытаетесь получить доступ к данным, которые не были созданы, поскольку вы правильно инициализировали их как матрицу m на n в строке:
matriz=new int [fil][col];
Решение
Предполагая, что вы правильно вставили значения матрицы m на n, просто выведите матрицу такой, какая она есть (матрица m на n, а не n на n), например так:
for(int i=0; i<fil; i++)
{
for(int j=0; j<col; j++)
{
System.out.print(matriz[i][j]+" ");
}
System.out.println("");
}
Диагональ печати
Информацию о печати массива по диагонали можно найти по адресу: http://javabypatel.blogspot.com/2016/12/print-matrix-diagonally-or-diagonal.html
Логика должна быть очень переносимой.