题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次扫印出每一个数字。
题目解析:主要是对行号和列号的控制
public static void printMatrix (int [][] arr) {
if (arr == null ) {
return ;
}
int x = 0 , y = 0 ;
while (x <= (arr.length - 1 ) / 2 && y < (arr[0 ].length - 1 ) / 2 ) {
printCircle(arr, x, y);
x++;
y++;
}
}
public static void printCircle (int [][] arr, int x, int y) {
int rows = arr.length;
int columns = arr[0 ].length;
for (int i = y; i <= columns - y - 1 ; i++) {
System.out .print(arr[x][i] + " " );
}
if (rows - x - 1 > x) {
for (int i = x + 1 ; i <= rows - x - 1 ; i++) {
System.out .print(arr[i][columns - y - 1 ] + " " );
}
}
if (rows - x - 1 > x && columns - y - 1 > y) {
for (int i = columns - y - 2 ; i >= y; i--) {
System.out .print(arr[rows - x - 1 ][i] + " " );
}
}
if (columns - 1 - y > y && rows - 1 - x > x + 1 ) {
for (int i = rows - 1 - x - 1 ; i >= x + 1 ; i--) {
System.out .print(arr[i][y] + " " );
}
}
}