题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
import java.util.ArrayList;
public class CopyOfprintArray1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// int[][] arr={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int[][] arr={{1},{2},{3},{4}};
printMatrixInCircle(arr);
}
private static void printMatrixInCircle(int[][] arr) {
// TODO Auto-generated method stub
ArrayList<Integer> arraylist=new ArrayList();
int n=arr[0].length;
int m=arr.length;
if(arr.length==0 || arr[0].length==0){
return;
}
int start=0;
while(m>start*2 && n>start*2){
int endX=n-1-start;
int endY=m-1-start;
//从左向右打印
for(int i=start;i<=endX;i++){
int value=arr[start][i];
System.out.print(value);
arraylist.add(value);
}
//从上到下打印一列
if(start<endY){
for(int i=start+1;i<endY;i++){
int value=arr[i][endX];
System.out.print(value);
arraylist.add(value);
}
}
//从右到左
if(start<endX && start <endY){
for (int i = endX-1; i >=start; i--) {
int value=arr[endY][i];
System.out.print(value);
arraylist.add(value);
}
}
//从下到上
if(start<endX && start<endY-1){
for(int i=endY-1;i>=start+1;--i){
int value=arr[i][start];
System.out.print(value);
arraylist.add(value);
}
}
++start;
}
// return arraylist;
}
}