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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 星陨 中级黑马   /  2016-12-13 16:18  /  687 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;

import java.util.Scanner;

/**
* 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
*
*         1        2        3        4
        12        13        14        5
        11        16        15        6
        10        9        8        7

*
* @author weimingzhu
*
*/
public class Test7 {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数:");
                int n = sc.nextInt();
                int[][] arr = new int[n][n];
                //设置二维数组第一个数初始化值为1
                arr[0][0] = 1;
                //定义一个变量count为数组长度-1
                int count = arr.length - 1;
                //设置方阵由外层到里层的循环
                for (int i = 0; i < arr.length; i++) {
                        //设置方阵最外层的值
                        //设置方阵第一行的值
                        for (int j = 1; j < arr.length; j++){
                                //如果对于值已经赋值过,则不用再赋值
                                if (arr[i][j] > 0){continue;}
                               
                                arr[i][j] = arr[i][j-1] + 1;
                        }
                        //设置方阵最后一列的值
                        for (int j = 1; j < arr.length; j++){
                                if (arr[j][count-i] > 0){continue;}
                               
                                arr[j][count-i] = arr[j-1][count-i] + 1;
                        }
                        //设置方阵最后一行的值
                        for (int j = 1; j < arr.length; j++){
                                if (arr[count-i][count-j] > 0){continue;}
                               
                                arr[count-i][count-j] = arr[count-i][count-j+1] + 1;
                        }
                        //设置方阵第一列的值
                        for (int j = count-i; j > 0; j--){
                                if (arr[j][i] > 0){continue;}
                                arr[j][i] = arr[j+1][i] + 1;
                        }
                }
                //按照方阵形式打印该二维数组
                for (int i = 0; i < arr.length; i++) {
                        for (int j = 0; j < arr[i].length; j++) {
                                System.out.print(arr[i][j] + "\t");
                        }
                        System.out.println("");
                }

        }
}

评分

参与人数 1黑马币 +5 收起 理由
q25225 + 5 很给力!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马