A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ︶︿︶︶︿︶ 于 2015-4-12 21:18 编辑

import java.util.Scanner;

class Sum
{
        public static void main(String[] args)
        {
                Scanner sc = new Scanner(System.in);
                        System.out.println("请输入你要回旋的边长:  ");
                        int n=sc.nextInt();
        int k=0;
        int x,y;
        int[][]  arr = new int [n][n];
        for (x=0;x<=(n+1)/2-1 ;x++ )
        {
                for ( y=x;y<=n-x-1 ;y++ )
                {
                        arr[x][y]=++k;
                }
                for ( y=x+1;y<=n-x-1 ;y++ )
                {
                        arr[y][n-x-1]=++k;
                }
                        for (y=n-x-2;y>=x ; y--)
                        {
                                arr[n-x-1][y]=++k;
                        }
                for (y=n-x-2;y>x ;y-- )
                {
                        arr[y][x]=++k;
                }
        }
        for (x=0;x<n ;x++ )
        {
                for ( y=0;y<n ;y++ )
                {
                        System.out.print(arr[x][y]+"\t");
                }
                System.out.println();
        }
        
        }
}


2 个回复

正序浏览
赞一个,不错
回复 使用道具 举报
本帖最后由 houtrry 于 2015-4-13 00:25 编辑

public class Test {
        public static void main(String[] args) {
                int SIZE = 5;
                int arr[][] = new int[SIZE][SIZE];
                int i, j, k = 0, n, m;
                n = SIZE;
                m = n/2+n%2;//获取循环次数
                for (i = 0; i < m; i++) {
                        // 顶边,从左到右,行不变列变
                        for (j = i; j <= n - i - 1; j++)
                                arr[j] = ++k;// 输出1、2、3、4、5、、、17、18、19、、、、25
                        
                        // 右边,从上到下,行变列不变
                        for (j = i + 1; j <= n - i - 1; j++)
                                arr[j][n - i - 1] = ++k; // 输出5、6、7、8、9、、、20、21
                        
                        // 底边,从右到左,行不变列变
                        for (j = n - i - 2; j >= i; j--)
                                arr[n - i - 1][j] = ++k; // 输出10、11、12、13、、、22、23
                        
                        // 左边,从下到上,行变列不变
                        for (j = n - i - 2; j >= i + 1; j--)
                                arr[j] = ++k; // 输出14、15、16、、、24
                }
                for (i = 0; i < n; i++) {
                        for (j = 0; j < n; j++){
                                System.out.print(arr[j] + "\t");
                        }
                        System.out.println();
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马