回形数

键盘读入一个整数n(1-20),以n为矩阵大小,把1,2,3,4,5…按顺时针螺旋的形式填入。

import java.util.Scanner;

public class HuiXingShu {
public static void main(String[] args) {
System.out.print("请输入一个整数:");
int lenth;
Scanner scanner = new Scanner(System.in);
lenth = scanner.nextInt();
int[][] array = new int[lenth][lenth];
int direction = 1;//判断方向,1从左往右,2从上往下,3从右往左,4从下往上。
int i = 0;
int j = 0;
int k;
for(k = 1;k <= lenth * lenth;k++) {
if(direction == 1) {
if(j < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i][j++] = k;
else {
direction = 2;//更换方向为从上到下
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
i++;//这一行已经填满数,往下挪一行
j--;//下标已经越界,往回挪一列
}
}
else if(direction == 2) {
if(i < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i++][j] = k;
else {
direction = 3;//更换方向为从右到左
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
j--;//这一列已经填满数,往左挪一列
i--;//下标已经越界,往上挪一行
}
}
else if(direction == 3) {
if(j >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i][j--] = k;
else {
direction = 4;//更换方向为从下到上
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
i--;//这一行已经填满数,往上挪一行
j++;//下标已经越界,往回挪一列
}
}
else if(direction == 4) {
if(i >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
array[i--][j] = k;
else {
direction = 1;//更换方向为从左到右
k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
j++;//这一列已经填满数,往右挪一列
i++;//下标已经越界,往下挪一行
}
}
}
//遍历输出
for(int[] x : array) {
for(int y : x)
System.out.printf("%3d",y);
System.out.println();
}
}
}

最新文章

  1. [LeetCode] One Edit Distance 一个编辑距离
  2. 【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
  3. Orcle数据库 表的 内置函数 内链接 外连接 相关练习题
  4. SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
  5. 烂泥:centos6.4服务器添加新硬盘
  6. 求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
  7. /proc/sys/net/ipv4/下各项的意义
  8. [Android学习笔记]自定义控件的使用
  9. JFileChooser
  10. 职责链(Chain of Responsibility)模式
  11. 设置input的placeholder样式
  12. 使用tdload工具将本地数据导入到Teradata数据库中
  13. VC++、Win32 SDK、MFC的区别
  14. 讲一讲Servlet的生命周期
  15. Wasserstein距离
  16. mysql5.7 误删管理员root账户
  17. mysql 源代码编绎
  18. opencv3.10加入OPENCV_contrib模块
  19. ssh 远程执行命令简介
  20. string 的函数

热门文章

  1. heap exploit about ptmalloc in glibc version 2.31
  2. [BUUCTF]REVERSE——[GKCTF2020]Check_1n
  3. 2020腾讯犀牛鸟网络安全T-Star高校挑战赛writeup
  4. Sentinel-Go 源码系列(三)滑动时间窗口算法的工程实现
  5. AT2642 [ARC076A] Reconciled? 题解
  6. pl/sql属性类型
  7. 解决VMware开机黑屏问题
  8. 模块化和webpack模块化打包
  9. 【九度OJ】题目1153:括号匹配问题 解题报告
  10. 【LeetCode】900. RLE Iterator 解题报告(Python & C++)