有高手在吗?帮同学做个题
给定数字n,输出1到n方的数字,输出格式如下
如果n=3 输出
123
894
765
如果n=4输出
1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7看起来就是盘着输出一样

解决方案 »

  1.   

    csdn 有这样的帖子,自己去搜搜吧
      

  2.   

    帮你找了份代码,非原创.import java.util.Scanner;public class Helix { static int record = 1;// 记录每层的起始数字
    static int start = 0;// 每层的起始下标
    static int end = 0;// 每层的终止下标
    static int reduce = 0;// 用于记录减小量 public static void main(String args[]) {
    Scanner sc=new Scanner(System.in);
    System.out.println("请输入数字n:");
    int n=sc.nextInt();
    process(n);
    } public static void setNum(int n,int[][] arr) {// 递归的为二维数组赋值
    if (n > 0) { for (int i = start; i < end; i++) {// 为每层的第一列和最后一列赋值
    arr[start][i] = record;
    arr[end - 1][i] = record + 3 * (n - 1) - 2 * reduce;
    reduce++;
    record++;
    }
    reduce = 1;
    for (int i = start + 1; i < end - 1; i++) {// 为每层的第一行和最后一行赋值
    arr[i][end - 1] = record;
    arr[i][start] = record + 3 * (n - 1) - 2 * reduce;
    reduce++;
    record++;
    }
    reduce = 0;
    start++;
    record = record + 2 * (n - 1);// 得到下一层的起始量
    end--;
    setNum(n - 2,arr);// 每递归一次每层边上的数字量减小2
    } else
    return;
    } public static void process(int n) {
    int[][] arr = new int[n][n];

    String space = " ";
    end = n;
    setNum(n,arr);
    for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
    System.out.print(arr[i][j] + space);
    }
    System.out.println();// 输入完一行后要换行
    }
    }}
      

  3.   

    OK了分享一下 改了人家的
    package com.shou.exam;
    public class testjz {  /**
      * @param args
      */
    public static void main(String[] args){
    testjz tj = new testjz();
    tj.test(10);
    }
     public void test(int n) {
     
        int i,j;
        int ch=1;
        int[][] a = new int[n][n];     for(i=0;i<n/2;i++){
            for(j=i;j<n-i;j++){
                a[i][j]=ch;
                ch++;
            }
            for(j=i+1;j<n-i;j++){
                a[j][n-i-1]=ch;
                ch++;
            }
            for(j=n-i-2;j>=i;j--){
                a[n-i-1][j]=ch;
                ch++;
            }
            for(j=n-i-2;j>i;j--){
                a[j][i]=ch;
                ch++;
            }
        }
        //输出二维数组
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
             if(a[i][j]==0){
             a[i][j]=n*n;
             }
                System.out.print(a[i][j]+" ");
            }
            System.out.println();
        }
     }
    }