回形数

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

  1. import java.util.Scanner;
  2. public class HuiXingShu {
  3. public static void main(String[] args) {
  4. System.out.print("请输入一个整数:");
  5. int lenth;
  6. Scanner scanner = new Scanner(System.in);
  7. lenth = scanner.nextInt();
  8. int[][] array = new int[lenth][lenth];
  9. int direction = 1;//判断方向,1从左往右,2从上往下,3从右往左,4从下往上。
  10. int i = 0;
  11. int j = 0;
  12. int k;
  13. for(k = 1;k <= lenth * lenth;k++) {
  14. if(direction == 1) {
  15. if(j < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
  16. array[i][j++] = k;
  17. else {
  18. direction = 2;//更换方向为从上到下
  19. k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
  20. i++;//这一行已经填满数,往下挪一行
  21. j--;//下标已经越界,往回挪一列
  22. }
  23. }
  24. else if(direction == 2) {
  25. if(i < lenth && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
  26. array[i++][j] = k;
  27. else {
  28. direction = 3;//更换方向为从右到左
  29. k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
  30. j--;//这一列已经填满数,往左挪一列
  31. i--;//下标已经越界,往上挪一行
  32. }
  33. }
  34. else if(direction == 3) {
  35. if(j >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
  36. array[i][j--] = k;
  37. else {
  38. direction = 4;//更换方向为从下到上
  39. k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
  40. i--;//这一行已经填满数,往上挪一行
  41. j++;//下标已经越界,往回挪一列
  42. }
  43. }
  44. else if(direction == 4) {
  45. if(i >= 0 && array[i][j] == 0)//不能先判断数组中元素是否为零,可能会越界
  46. array[i--][j] = k;
  47. else {
  48. direction = 1;//更换方向为从左到右
  49. k--;//这个数没有赋给数组,过了这轮循环又会加一,所以先减一
  50. j++;//这一列已经填满数,往右挪一列
  51. i++;//下标已经越界,往下挪一行
  52. }
  53. }
  54. }
  55. //遍历输出
  56. for(int[] x : array) {
  57. for(int y : x)
  58. System.out.printf("%3d",y);
  59. System.out.println();
  60. }
  61. }
  62. }

【Java】回形数的更多相关文章

  1. Java实现回形数,只利用数组、循环和if-else语句

    import java.util.Scanner; public class learn { public static void main(String[] args){ System.out.pr ...

  2. java參数传递机制浅析

    欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...

  3. java线程数过高原因分析

    作者:鹿丸不会多项式  出处:http://www.cnblogs.com/hechao123   转载请先与我联系. 一.问题描述 前阵子我们因为B机房故障,将所有的流量切到了A机房,在经历了推送+ ...

  4. java參数传递方式问题

    java的參数传递方式到底是值传递还是引用传递,这一直是一个争论不休的问题,一直以来没有形成统一意见. 在这里,我也仅仅是说一说个人见解,不保证是对的,全当是抛砖引玉. 首先我的观点是java採用的是 ...

  5. Java參数传递方式

    原文:http://blog.sina.com.cn/s/blog_59ca2c2a0100qhjx.html,我作了些改动并添加了一个实例,添加对照 本文通过内存模型的方式来讨论一下Java中的參数 ...

  6. Java将数据以Excel文件形式导出后台代码实现

    下面代码实现所需jar包: tomcat-embed-core-8.5.11.jar: commons-lang3-3.0.1.jar: commons-io-2.5.jar: poi-3.9.jar ...

  7. java猜数游戏

    java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...

  8. java猜数游戏(新手记录每天的作业)

    //导入包 import java.util.Scanner;import java.util.Random; //定义一个类 public class Zcs{ //公共静态的主方法 public ...

  9. JAVA取数两个数组交集,考虑重复和不重复元素

    1.考虑不重复元素,重复元素不添加 import java.awt.List; import java.util.ArrayList; import java.util.TreeSet; public ...

随机推荐

  1. [BUUCTF]PWN7——[OGeek2019]babyrop

    [BUUCTF]PWN7--[OGeek2019]babyrop 题目网址:https://buuoj.cn/challenges#[OGeek2019]babyrop 步骤: 例行检查,32位,开启 ...

  2. VS 2019 调试 Asp.net WebApi 失败:ID为xx的进程当前未运行

    概述 解决方案 用记事本或者其他文本编辑器,从文件夹中打开启动项项目下的 .csproj 文件: 删除节点 WebProjectProperties 内的所有代码: 保存后,VS会提示全部重新加载项目 ...

  3. java多线程9:线程池

    线程池 线程池的优点 我们知道线程的创建和上下文的切换也是需要消耗CPU资源的,所以在多线程任务下,使用线程池的优点就有: 第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗. ...

  4. LuoguP7679 [COCI2008-2009#5] JABUKA 题解

    Content Mirko 拥有 \(R\) 个红苹果和 \(G\) 个绿苹果,他想把他分给若干个朋友,使得所有朋友分得的红苹果个数和绿苹果个数都一样.现给定 \(R,G\),请你帮助 Mirko 找 ...

  5. Redis缓存穿透、击穿、雪崩,数据库与缓存一致性

    Redis作为高性能非关系型(NoSQL)的键值对数据库,受到了广大用户的喜爱和使用,大家在项目中都用到了Redis来做数据缓存,但有些问题我们在使用中不得不考虑,其中典型的问题就是:缓存穿透.缓存雪 ...

  6. java 输入输出 对象序列化implements Serializable与反序列化:ObjectOutputStream.writeObject() ;objectInputStream.readObject() ;serialVersionUID字段注意

    对象序列化 对象序列化的目标是将对象保存到磁盘中,或允许在网络中直接传输对象.对象序列化机制允许把内存中的 Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将 ...

  7. 超链接 a 标签点击时,弹出提示框,可以按照如下来写

    onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示

  8. SPQuery ViewAttributes Sharepoint列表查询范围

    SPSite site=new SPSite(SPContext.Current.Web.Url); SPWeb web=site.OpenWeb(); SPList splist=web.Lists ...

  9. 【LeetCode】1466. 重新规划路线 Reorder Routes to Make All Paths Lead to the City Zero (Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://lee ...

  10. codeforces 624C Graph and String

    C. Graph and String time limit per test 2 seconds memory limit per test 256 megabytes input standard ...