螺旋矩阵

package com.ham;

public class Luoxuanjz {

    public static void main(String[] args) {
        luoxuan(5);
    }
    
    public static void luoxuan(int n) {
        int[][] arr = new int[n][n];
        
        int a = 1;
        int b = n%2==0 ? n/2 : n/2+1;   //循环次数     
             
        for(int i=0; i<b; i++) {
            
            // --->    从左到右
            for(int j=i; j<n-i; j++) {
                arr[i][j] = a++;
            }
            
            //  |   从上到下
            // \|/
            for(int j=i+1; j<n-i; j++) {
                arr[j][n-i-1] = a++;
            }
            
            // <--- 从右到左
            for(int j=n-i-2; j>=i; j--) {
                arr[n-i-1][j] = a++;
            }
            
            // /|\  从下到上
            //  |
            for(int j=n-i-2; j>i; j--) {
                arr[j][i] = a++;
            }
        }
        
        //打印
        for(int k=0; k<n; k++) {
            for(int m=0; m<n; m++) 
                System.out.print(getWhole(arr[k][m]) + "  ");
            System.out.println();
        }
    }
    
    //保证数字个数一致
    public static String getWhole(int a) {
        String result = String.valueOf(a);
        if(result.length() == 1) return "0" + result;
        if(result.length() > 2) return "**";
        return result;
    }
 
}

 

posted @ 2013-10-12 11:25  陆吾  阅读(221)  评论(0编辑  收藏  举报