先依次打印出第一圈的上下左右,然后写最外面的for循环,控制圈数,根据规律再修改代码
public static void printMatrix(int[][]arr){
int flag=0;
if(arr.length%2!=0){//用来标记奇偶
flag = 1;
}
for(int circle = 0;circle<arr.length/2+flag;circle++) {
//上
for (int column = circle; column < arr[0].length -circle; column++) {
System.out.print(arr[circle][column] + " ");
}
//右
for (int row = 1+circle; row < arr.length - circle; row++) {
System.out.print(arr[row][arr[0].length - 1-circle] + " ");
}
//下
for (int column = arr[0].length - 2-circle; column >= circle; column--) {
System.out.print(arr[arr.length - 1-circle][column] + " ");
}
//左
for (int row = arr.length - 2-circle; row >= 1+circle; row--) {
System.out.print(arr[row][circle] + " ");
}
}
测试
int[][] arr = new int[][]{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
int[][] brr = new int[][]{{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20}};
int[][] crr = new int[][]{{1,2,3},{4,5,6}};
int[][] drr = new int[][]{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};