java 二维数组打印数字矩阵

昨天面试给出了个矩阵的题,当时有思路,但基于时间,而且是在纸上,也没写清楚,回来想想真是简单,代码写完了,还是记录下来吧

package com.test;
/**
 * 打印如下矩阵
 * 1   2   3   4   5
 * 16  17  18  19  6
 * 15  24  25  20  7
 * 14  23  22  21  8
 * 13  12  11  10  9
 *             
 * @author fengxian.liu
 *
 */
public class TestArray {

	public static void main(String[] args){
		int n=7;
		int q=n/2+n%2;
		int count=1;
		int a[][]=new int[n][n];
		for(int i=0;i<q;i++){//组装第i+1圈数据
			//组装第n行
			for(int j=i;j<n-i;j++){
					a[i][j]=count;
					//System.out.print("a["+i+"]["+j+"]="+count);
					count++;
			}
			//System.out.println();
		
			//组装最后第n列
			for(int k=i+1;k<n-i;k++){
				a[k][n-i-1]=count;
			//	System.out.print("a["+k+"]["+(n-i-1)+"]="+count);
				count++;
			}
			//System.out.println();
			// 组装最后第n行
			for(int l=n-i-2;l>=i;l--){
				a[n-i-1][l]=count;
				//System.out.print("a["+(n-i-1)+"]["+l+"]="+count);
				count++;
				
			}
			//System.out.println();
			//组装左边的第n列
			for(int k=n-i-2;k>i;k--){
				//定值列的坐标	
				a[k][i]=count;
			//	System.out.print("a["+k+"]["+i+"]="+count);
				count++;
			}
			//System.out.println();
		}
	        //循环遍历打印出来	
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				System.out.print("  "+a[i][j]);
			}
			System.out.println();
		}
	}
}

猜你喜欢

转载自shuixian.iteye.com/blog/2109605