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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鸡脑壳 中级黑马   /  2015-4-19 23:58  /  2713 人查看  /  60 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

首先贴代码
import java.util.Scanner;
/*
要求:输出打印螺旋方阵

思路:
        1、把螺旋方阵拆成四种循环,依次分别为,往右赋值,往下赋值,往左赋值,往上赋值
        2、建立二维数组,用索引来控制整个复制过程
        3、找到思路1中四种循环的起点开始赋值
        4、思路1循环赋值一次后,存在一个最外围的大圈,开始找第二个大圈的起点
        5、找到第二个大圈的起点开始赋值
        6、重复上述步骤,直到方阵填满(填满的次数 = 方阵的边长 / 2 + 1;)
        7、打印出二维数组
*/
public class Demo {
        public static void main(String[] args) {
                // 建立键盘录入对象
                Scanner sc = new Scanner(System.in);

                // 设 x 为二维数组的横轴,y 为二维数组的纵轴,
                int x = 0, y = 0;

                // 创建变量从1开始赋值
                int n = 1;

                // 打印提示语句
                System.out.println("请输入您想要的螺旋方阵的大小:");

                // 输入螺旋方阵的大小
                int temp = sc.nextInt();

                // 建立二维数组存储数据
                int[][] arr = new int[temp][temp];

                // 建立控制循环
                for (int i = 0; i < arr.length; i++) {
                        // 固定横轴,纵轴依次相加依次赋值
                        // for循环中的初始化部分为螺旋方阵赋值的起点
                        for (x = x, y = y; y < arr.length - i; y++) {
                                arr[x][y] = n++;
                        }
                        // 固定纵轴,横轴依次相加依次赋值
                        // for循环中的初始化部分为螺旋方阵赋值的第一个转折点
                        for (x = x + 1, y = y - 1; x < arr.length - i; x++) {
                                arr[x][y] = n++;
                        }
                        // 固定横轴,纵轴依次相减赋值
                        // for循环中的初始化部分为螺旋方阵赋值的第二个转折点
                        for (x = x - 1, y = y - 1; y >= i; y--) {
                                arr[x][y] = n++;
                        }
                        // 固定纵轴,横轴依次相减赋值
                        // for循环中的初始化部分为螺旋方阵赋值的第三个转折点
                        for (x = x - 1, y = y + 1; x >= i + 1; x--) {
                                arr[x][y] = n++;
                        }
                       
                        //一次大循环后,索引值要分别加一,x加一是因为为了不越界,y加一是为了成为下一个循环的起点
                        x = x + 1;
                        y = y + 1;
                }

                // 输出打印这个二维数组
                for (int i = 0; i < arr.length; i++) {
                        for (int j = 0; j < arr.length; j++) {
                                if (arr[i][j] >= 1 && arr[i][j] <= 9) {
                                        System.out.print(arr[i][j] + "    ");
                                } else if (arr[i][j] >= 10 && arr[i][j] <= 99) {
                                        System.out.print(arr[i][j] + "   ");
                                } else if (arr[i][j] >= 100 && arr[i][j] <= 999) {
                                        System.out.print(arr[i][j] + "  ");
                                } else if (arr[i][j] >= 1000 && arr[i][j] <= 9999) {
                                        System.out.print(arr[i][j] + " ");
                                }
                        }
                        System.out.println();
                }
        }
}

上传图片为这个代码的效果图

上课草稿012 2015-04-20, 00_01_36.jpg (103.16 KB, 下载次数: 84)

效果图

效果图

点评

可以改进下,变成行数跟列数都可以输入  发表于 2015-4-27 23:03

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
小甲鱼 + 1 曦胖子?
lwj123 + 1

查看全部评分

60 个回复

倒序浏览
完全看不懂的样子
回复 使用道具 举报
不错啊,加油
回复 使用道具 举报
二维数据基本不会用……
回复 使用道具 举报
厉害,因为做过这个题,所以表示佩服。
回复 使用道具 举报

。。。。。
主要是为了技术分。。。
看别人发代码都可以加分,我也试试传自己写的
回复 使用道具 举报

谢谢,加油!
回复 使用道具 举报
Imtonoo 发表于 2015-4-20 00:40
天啊 ,太厉害了

。。。
我觉得写程序就是要把复杂的事情简单化就好了
回复 使用道具 举报
懒的呼吸 发表于 2015-4-20 09:00
二维数据基本不会用……

是在实际程序里面 不需要用么?
我都不懂,以后什么要用什么不要用。。。
回复 使用道具 举报
若果每天都努力 发表于 2015-4-20 09:39
厉害,因为做过这个题,所以表示佩服。

谢谢
一起努力加油!
回复 使用道具 举报
不错不错,~
回复 使用道具 举报
厉害哟!
回复 使用道具 举报
最后打印有点看不懂    拿来自己试试
回复 使用道具 举报
thoris 发表于 2015-4-20 23:29
最后打印有点看不懂    拿来自己试试

就是判断 存储的值的大小区间 ,然后加空格的个数
觉得打不了多少,只是用来做演示的,就只设置在了四位数的范围以内了
回复 使用道具 举报
路过,学习一下
回复 使用道具 举报

共勉!
加油!!!
回复 使用道具 举报

谢谢~
加油!
回复 使用道具 举报
真的牛!
回复 使用道具 举报
Zack 中级黑马 2015-4-21 12:16:47
19#
厉害,学习了
回复 使用道具 举报
有无相生 来自手机 中级黑马 2015-4-21 12:37:20
20#
很厉害。学习了
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马