7 8 9 10
6 1 2 11
5 4 3 12
16 15 14 13
怎样用java实现这个效果?

解决方案 »

  1.   


    import java.util.Scanner;
    public class Rotate {
    public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("请输入阶数(正整数):");
    int n = input.nextInt();
    if(n <= 0) {
    System.out.println("阶数为正整数!");
    System.exit(0);
    }

    int[][] num = new int[n][n];
    for(int i=0; i<num.length; i++) {
    for(int j=0; j<num[i].length; j++) {
    num[i][j] = 0;
    }
    } //如果是偶数阶的话,就从[n-1,0]开始按照先右再上,然后左,最后下的顺序循环
    //如果是奇数阶的话,就从[0,n-1]开始按照先左再下,然后右,最后上的顺序循环
    //值从n*n依次减1
    int i,j;
    int circle = 0;//循环的圈数
    int max = n * n;
    if(n % 2 == 0) {
     i = n - 1;
     j = 0;
     while(circle <= n / 2) {
     for(; j<n-circle; j++) 
     num[i][j] = max--;
     for(j--,i--; i>=circle; i--)
     num[i][j] = max--;
     for(i++,j--; j>=circle; j--)
     num[i][j] = max--;
     for(i++,j++; i<n-circle-1; i++)
     num[i][j] = max--;
     j++;
     i--;
     circle ++;
     }
    } else {
    i = 0;
    j = n - 1;
    while(circle <= n / 2) {
     for(; j>=circle; j--)
     num[i][j] = max--;
     for(j++,i++; i<n-circle; i++)
     num[i][j] = max--;
     for(i--,j++; j<n-circle; j++)
     num[i][j] = max--;
     for(j--,i--; i>=circle+1; i--)
     num[i][j] = max--;
     i++;
     j--;
     circle ++;
    }
    }

    int len = String.valueOf(n * n).length();//最大的数的位数
    String format = "%" + len + "d ";//每个数都按最大数的位数格式化
    for(i=0; i<num.length; i++) {
    for(j=0; j<num.length; j++) {
    System.out.format(format, num[i][j]);
    }
    System.out.println();
    }
    }
    }
      

  2.   

    public class ATests
    {
    public static void main(String[] args)
    {
    //设置行列数 m--行 n--列 随意设置 自己修改或者键盘录入
    int m = 4;
    int n = 4;

    int[][] a = new int[m][n];

    int c = (m>n?n:m+1)/2;
    int i = 0;
    int j = 0;
    int max_i = 0;
    int max_j = 0;
    int value = m*n;

    for (int k = 0; k < c; k++)
    {
    i = k;
    j = k;
    max_i = m-k;
    max_j = n-k;
    if(k!=m-k-1)
    {
    for(;j<max_j;j++)
    {
    a[max_i-1][j] = value--; 
    }
    for(max_i=max_i-2;max_i>=i;max_i--)
    {
    a[max_i][j-1] = value--;
    }
    for(j=max_j-2;j>=k;j--)
    {
    a[i][j] = value--;
    } for(i=i+1;i<m-k-1;i++)
    {
    a[i][k] = value--;
    }
    }
    else
    {
    for(;j<max_j;j++)
    {
    a[max_i-1][j] = value--; 
    }
    }
    }
    for(int h=0;h<a.length;h++)
    {
    for(int g=0;g<a[h].length;g++)
    {
    System.out.print(a[h][g]+"\t");
    }
    System.out.println();
    }
    }
    }
      

  3.   

    sorry 上面那个没放入javacode里
    public class ATests
    {
    public static void main(String[] args)
    {
    //设置行列数 m--行 n--列 随意设置 自己修改或者键盘录入
    int m = 4;
    int n = 4;

    int[][] a = new int[m][n];

    int c = (m>n?n:m+1)/2;
    int i = 0;
    int j = 0;
    int max_i = 0;
    int max_j = 0;
    int value = m*n;

    for (int k = 0; k < c; k++)
    {
    i = k;
    j = k;
    max_i = m-k;
    max_j = n-k;
    if(k!=m-k-1)
    {
    for(;j<max_j;j++)
    {
    a[max_i-1][j] = value--; 
    }
    for(max_i=max_i-2;max_i>=i;max_i--)
    {
    a[max_i][j-1] = value--;
    }
    for(j=max_j-2;j>=k;j--)
    {
    a[i][j] = value--;
    } for(i=i+1;i<m-k-1;i++)
    {
    a[i][k] = value--;
    }
    }
    else
    {
    for(;j<max_j;j++)
    {
    a[max_i-1][j] = value--; 
    }
    }
    }
    for(int h=0;h<a.length;h++)
    {
    for(int g=0;g<a[h].length;g++)
    {
    System.out.print(a[h][g]+"\t");
    }
    System.out.println();
    }
    }
    }
      

  4.   

    给你发个C++的,改一下就可以了void printMatrix(int *m, const int size) {
        for (int i = 0; i < size * size; ++i) {
            if (i % size == 0 && i != 0) {
                std::cout << std::endl;
            }        printf("%-4d", m[i]);
        }
    }/*
     82  81  80  79  78  77  76  75  74  73
     83  50  49  48  47  46  45  44  43  72
     84  51  26  25  24  23  22  21  42  71
     85  52  27  10  9   8   7   20  41  70
     86  53  28  11  2   1   6   19  40  69
     87  54  29  12  3   4   5   18  39  68
     88  55  30  13  14  15  16  17  38  67
     89  56  31  32  33  34  35  36  37  66
     90  57  58  59  60  61  62  63  64  65
     91  92  93  94  95  96  97  98  99  100
     */
    void matrix_2(const int size) {
        int *ns = new int[size * size];
        int x = size - 1, y = size - 1;
        int count = size * size;    ns[size * size - 1] = count--;
        int circle = 0;
        while (count > 0) {
            while (x - 1 >= circle) {
                ns[y * size + (--x)] = count--;
            } // left
            while (y - 1 >= circle) {
                ns[(--y) * size + x] = count--;
            } // top
            while (x + 1 < size - circle) {
                ns[y * size + (++x)] = count--;
            } // right
            while (y + 1 < size - circle - 1) {
                ns[(++y) * size + x] = count--;
            } // down        ++circle;
        }    printMatrix(ns, size);
        delete[] ns;
    }