import java.util.Scanner;

public class learn {
  public static void main(String[] args){

    System.out.println("请输入你需要打印多少阶的回形数:");
    Scanner scan = new Scanner(System.in);
    int num = scan.nextInt();    // 接收num,则打印num阶的回形数
    scan.close();
    int[][] hui = new int[num][num];
    for(int i = 0,j = 0,flag = 0,theNum = 1; theNum<=(num*num);) {    //    i可视为二维数组的第i+1排,j可视为二维数组的j+1列;flag表示回形数进行的第flag+1圈;theNum为赋的值。
      if(j<num-flag) {        //回形数向右走时
        hui[i][j] = theNum;
        j++;
        theNum++;
      }
      else if(i+1<num-flag) {    //回形数向下走时
        hui[i+1][j-1] = theNum;
        theNum++;
        i++;
      }
      else {
        for(int m = num-flag-1,n = num -flag-1;;) {
          if(n>flag) {        //回形数向左走时
            n--;
            hui[m][n] = theNum;
            theNum++;
          }
          else if(m>flag+1) {        //回形数向右走时
            m--;
            hui[m][n] = theNum;
            theNum++;
          }
          else {
            i = flag+1;
            j = flag+1;
            flag++;
            break;
          }
        }
      }
    }
    for(int a = 0;a<num;a++) {
      for(int b = 0;b<num;b++) {
        System.out.printf("%d ",hui[a][b]);
      }
    System.out.println("\n");
    }
  }
}

Java实现回形数,只利用数组、循环和if-else语句的更多相关文章

  1. java中的栈(利用数组实现栈)

    java中的栈(利用数组实现栈) 常见的数据结构:https://blog.csdn.net/weixin_43304253/article/details/119764275 栈的介绍 1.栈的英文 ...

  2. 【Java】回形数

    回形数 键盘读入一个整数n(1-20),以n为矩阵大小,把1,2,3,4,5-按顺时针螺旋的形式填入. import java.util.Scanner; public class HuiXingSh ...

  3. IP访问频率限制不能用数组循环插入多个限制条件原因分析及解决方案

    14.IP频率限制不能用数组循环插入多个限制条件原因分析及解决方案: define("RATE_LIMITING_ARR", array('3' => 3, '6' => ...

  4. 习题两则的简化(利用for循环)

    习题一.打印26个英文字母 public class PrintChars { public static void main(String[] args) { char ch = 'a'; int ...

  5. 【Java】 剑指offer(56-1) 数组中只出现一次的两个数字

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程 ...

  6. Java利用数组随机抽取幸运观众

    编写程序,事先将所有观众姓名输入数组,然后获得数组元素的总数量,最后在数组元素中随机抽取元素的下标,根据抽取的下标获得幸运观众的姓名. 思路如下: 定义输入框的按键事件,使用KeyEvent类的get ...

  7. Java实现 LeetCode 457 环形数组循环

    457. 环形数组循环 给定一个含有正整数和负整数的环形数组 nums. 如果某个索引中的数 k 为正数,则向前移动 k 个索引.相反,如果是负数 (-k),则向后移动 k 个索引.因为数组是环形的, ...

  8. Java基础四(switch、数组、)

    1.流程控制语句switch2.数组3.随机点名器案例 ###01switch语句解构 * A:switch语句解构 * a:switch只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码. ...

  9. Java编程思想学习(十二) 数组和容器

    一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的 ...

随机推荐

  1. Jmeter之JDBC类型组件

    一.背景 在测试过程中,避免不了与数据库打交道,比如数据的校验.数据的准备或者重置操作,又或者对数据库进行增删改查,基于以上诉求,在Jmeter中是如何实现的呢.可使用JDBC类型组件来实现以上功能操 ...

  2. BUG----spark

    我也想说很尴尬, 搞到显现 发现 原来是个版本的bug spark 1.6.0  有个BUG 希望更多人看到 Traceback (most recent call last):  File &quo ...

  3. Windows 创建Raid

    Windows 常见raid有0.1和5,以下操作在虚拟机下模拟,学会这招在自己电脑做个raid也未尝不可啊~ 一.RAID 0 创建: 添加两块硬盘,联机并初始化(2T以下选MBR,以上选GPT) ...

  4. JavaScript是如何工作的02:深入V8引擎&编写优化代码的5个技巧

    概述 JavaScript引擎是执行 JavaScript 代码的程序或解释器.JavaScript引擎可以实现为标准解释器,或者以某种形式将JavaScript编译为字节码的即时编译器. 以为实现J ...

  5. Codeforces Round #603 (Div. 2) A,B,C,D【E题待补】

    #include<bits/stdc++.h> using namespace std; #define int long long signed main(){ int _; cin&g ...

  6. git查看commit提交记录详情

    相关的命令: git log:查看所有的commit提交记录: git show: 查看提交的详情: 首先,需要通过git log打印所有commit记录,例如: 1.查看最新的commit:git ...

  7. 一些VMware vCenter Appliance的默认用户名和密码

    一些VMware vCenter Appliance的默认用户名和密码 2014-03-30 17:30:03 flowershade_21 阅读数 13367更多 分类专栏: vmware   VM ...

  8. 洛谷 P3374 【模板】树状数组 1 & P3368 【模板】树状数组 2 题解

    一维树状数组的作用主要是单点修改,单点查询,区间修改,区间查询. 模板1是单点修改,区间查询:模板2是单点查询,区间修改. 模板1: #include<iostream> #include ...

  9. hbase单点安装

    系统环境:centos 6 软件包: hbase版本:hbase-1.4.8-bin.tar.gz     下载地址:wget  http://mirror.bit.edu.cn/apache/hba ...

  10. class与computed一起应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...