写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
来源:互联网 发布:re take 知乎 编辑:程序博客网 时间:2024/04/29 08:03
写一方法,打印等长的二维数组,
* 要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
-----------------------------------------------------------------------------------------------
/* * 22、 写一方法,打印等长的二维数组, * 要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印: 1234 1213145 1116156 10987 */public class Test22 {//设置输出方向final static private int RIGHT = 0x001;final static private int DOWN = 0x010;final static private int LEFT = 0x011;final static private int UP = 0x100;public static void main(String[] args) {int n = 8; // 数组长度int num = 1; // 初始值int flag = RIGHT; // 初始方向int a = 0, b = 0;int[][] arr = new int[n][n];//输出逻辑while (true) {if (n % 2 == 1) {if (arr[n / 2][n / 2] != 0) {break;}} else {if (arr[n / 2][n / 2 - 1] != 0) {break;}}if (flag == RIGHT) {if (arr[a][b] == 0) {arr[a][b] = num++;b++;if (b == n) {flag = DOWN;b--;a++;continue;}} else {flag = DOWN;b--;a++;continue;}} else if (flag == DOWN) {if (arr[a][b] == 0) {arr[a][b] = num++;a++;if (a == n) {flag = LEFT;a--;b--;continue;}} else {flag = LEFT;b--;a--;continue;}} else if (flag == LEFT) {if (arr[a][b] == 0) {arr[a][b] = num++;b--;if (b == -1) {b = 0;flag = UP;a--;continue;}} else {flag = UP;a--;b++;continue;}} else if (flag == UP) {if (arr[a][b] == 0) {arr[a][b] = num++;a--;} else {flag = RIGHT;a++;b++;continue;}}}// 格式化输出int len = String.valueOf(arr[n / 2][n / 2]).length() - 1;StringBuilder sb = new StringBuilder();for (int i = 0; i < len; i++) {sb.append("0");}for (int[] arrMem : arr) {for (int i : arrMem) {String s = String.valueOf(i).replaceAll("(\\d+)", sb.toString() + "$1");System.out.print(s.replaceAll("0*(\\d{" + (len + 1) + "})", "$1")+ " ");}System.out.println();}}}
0 0
- 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
- 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
- 打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。
- 环绕打印1开始的自然数---螺旋
- 一个二维数组以顺时针螺旋的方式打印出来
- 打印一个N*N的方阵,N为每边字符的个数,要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...
- 要求从键盘输入一个二维数组,然后将该二维数组按从大到小的顺序排列。
- 【每周一题】2、打印N*N阶的方阵
- 菜鸟柳(二维数组练习)--根据用户输入的数字输出如下格式:等长、数字从1递增1的螺旋二维数组的
- 螺旋打印二维数组
- 螺旋打印二维数组
- 黑马程序员——螺旋方阵的打印
- 二维数组的打印
- 二维数组的打印
- 二维数组(N*N),沿对角线方向,从右上角打印到左下角如N=4:
- 打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,...
- 黑马程序员——用二维数组打印螺旋方阵和螺旋矩阵
- 螺旋数组的打印系列汇总
- 1、Hibernate入门
- 关于Linux静态库和动态库的分析
- SQL Server 2008数据类型
- Android UI, Gallery(过时), ImageSwitcher, 简单图片浏览工具
- DNS扫盲系列之二:域名解析及DNS功能分类
- 写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:
- CodeForces 34A Reconnaissance 2
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- Asp.net 搭建图片上传服务器
- OpenCV分通道显示图片,灰度,融合,直方图,彩色直方图
- 树和二叉树
- java界面编程(8) ------ 组合框(下拉列表)
- DNS扫盲系列之三:有关智能DNS(BIND+VIEW)
- android 获取屏幕尺寸与密度