`

环形打印

阅读更多
运行结果
引用
1  2  3  4  5 
16  17  18  19  6 
15  24  25  20  7 
14  23  22  21  8 
13  12  11  10  9


class SnakePrint {
	static int length = 5;
	static int value = 1;
	static int[][] snake = new int[length][length];
	static Direction lastDirection = Direction.Right;

	static enum Direction {
		Right, Down, Left, Up;
	}

	public static void initialArray() {
		int row = 0, line = 0;
		for (int c = 0; c < length * length; c++) {
			snake[row][line] = value;
			lastDirection = findDirection(row, line);
			switch (lastDirection) {
				case Right:
					line++;
					break;
				case Down:
					row++;
					break;
				case Left:
					line--;
					break;
				case Up:
					row--;
					break;
				default:
					System.out.println("error");
			}
			value++;
		}
	}

	static Direction findDirection(int row, int line) {
		Direction direction = lastDirection;
		switch (direction) {
			case Right: {
				if ((line == length - 1) || (snake[row][line + 1] != 0))
					direction = direction.Down;
				break;
			}
			case Down: {
				if ((row == length - 1) || (snake[row + 1][line] != 0))
					direction = direction.Left;
				break;
			}
			case Left: {
				if ((line == 0) || (snake[row][line - 1] != 0))
					direction = direction.Up;
				break;
			}
			case Up: {
				if (snake[row - 1][line] != 0)
					direction = direction.Right;
				break;
			}
		}
		return direction;
	}

	public static void main(String[] args) {
		initialArray();

		// display.....
		for (int i = 0; i < length; i++) {
			for (int j = 0; j < length; j++) {
				System.out.print(snake[i][j] + "  ");
			}
			System.out.println();
		}
	}
}
分享到:
评论

相关推荐

    java实现转圈打印矩阵算法

    主要为大家详细介绍了java实现转圈打印矩阵算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    UART串口环形缓冲区实现和串口打印调试信息例程

    该例程使用eclipse IDE,演示了UART串口环形缓冲区的C语言实现代码,并将printf函数重映射到UART串口实现调试信息的打印输出。环形缓冲区的实现思路参照该链接:https://www.cnblogs.com/zengzy/p/5139582.html。...

    可连接WIFI并自动校时的极简主义环形LED时钟

    可连接WIFI并自动校时的极简主义环形LED时钟。本项目为"Round-Led-Clock"的改进版,主要改进和增加了以下功能:重构主程序及相关注释。解决原版程序运行一段时间就会死机的问题。NTP服务器改为了国内的服务器(阿里云...

    C#基础概念二十五问

    这是本人转自http://www.cnblogs.com/reonlyrun/archive/2007/04/05/CSharp_25_Question.html的一篇文章 由本人全部重新排版, 保留图片, 代码着色(以前的版本都没用这些), 提供三种格式: doc, 方便打印 chm...

    STM32搭载FreeRTOS实现任务+消息队列+串口通信完整项目代码[实测]

    STM32F103搭载FreeRTOS系统,工程中有2个任务,任务一1秒发送一次数字至任务队列,任务二接收来自任务一和串口中断的填充数据并打印。串口采用DMA+闲时中断方式,串口接收的数据转发到队列中。工程将USART重定义到...

    RingBuffer:缓冲

    RingBuffer 类 满足以下要求的线程安全环形缓冲区: 五个在环形缓冲区中生成流线。 该字符串的格式为“流生成的消息 №……” 另外两条流线从第一个环形... 程序的主要流程和打印从第二个缓冲区中惩罚 100 条消息。

    58mm USB 热敏打印机(写字库源代码+字库软件+USB 电脑打印机模式等)-电路方案

    2&gt;若已在走纸,就检查环形缓冲区是否有待打印数据——比较写入指针与读出指针的值可得知,若有待打印数据,就会在纸每走过一行时,把数据送入打印头并加热打印。 走纸,加热和数据传输,三者同时处理的时序 需要走纸...

    得实打印机色带更换方法.ppt

    * 得实打印机的特色:得实打印机是一种专业的打印设备,具有高质量的打印效果和长寿命的色带。 * 色带的类型:色带可以分为两种:普通环形色带和得实扭结色带。普通环形色带是最常见的色带类型,得实扭结色带是专门...

    软件工程之数据流图实例.pptx

    最后,根据总账文件打印会计报表。 第二个数据流图实例描述了进销存系统的处理过程。该过程包括五个主要步骤:确定每个动作的前序条件和后续动作,画出顶层数据流图,精化每个动作的核核心心动作和报表,确定每个...

    FreeRTOS+STM32F103通过队列传输串口数据

    STM32F103单片机上用FreeRTOS传输串口数据,在串口中断中用队列存储串口接收的数据,然后再定时器中断中,用队列接收串口的数据并打印出来。

    这是Kotlin语言版本的 Android 客户端本地化算法展示 Java 语言编写的面试算法_kotlin_代码_下载

    环形单链表的约瑟夫问题 一个鉴定链表是否为回文结构 将单向链某值分割成小表、送、按右边大的形式 复制带有日常指针的节点表 两个单链表生成相加链表 两个单链表相交的问题 将单链表的每K个节点之间逆序 二叉树问题...

    计算机应用基础复习资料.doc

    环形结构 C.总线结构 D.混合结构 14.校园网属于( B )。 A. 远程网 B. 局域网 C.广域网 D. 城域网 15.从用途来看,计算机网络可分为专用网和( C )。 A.广域网 B.分布式系统 C.公用网 D.互连网 16.下列哪一个不能...

    C++基于线程池技术实现大并发网络IO框架,一个基于C++11的轻量级网络框架

    std::cout风格的日志库,支持颜色高亮、代码定位、异步打印。 INI配置文件的读写。 监听者模式的消息广播器。 基于智能指针的循环池,不需要显式手动释放。 环形缓冲,支持主动读取和读取事件两种模式。 mysql链接池...

    计算机网络基础复习题库汇总.doc

    * 环形拓扑结构:是指所有主机通过环形连接,数据传输时沿着环形传送。 * 星形拓扑结构:是指所有主机通过中心设备连接,数据传输时通过中心设备转发。 四、计算机网络的类型 * 局域网(LAN):是指在小的地理区域...

    MyLang:一个由Nearley构建的业余编译器。 (感谢托比)

    MyLang 一个由Nearley构建的业余编译器。 特征 Lexer 解析器 ...环形 $ node parser.js examples/loop.mylang $ node examples/loop.js n : = 1 while n &lt; 10 { n : = n + 1 print n } 斐波那契

    Android例子源码类似老式转盘电话的双层旋转菜单效果.zip

    本例子是一个环形双层的菜单,可以根据手势的左右滑动,可以进行相应的转动,并且可以点击任意一个选项,动态效果类似于老式的老式的转盘电话,自己脑补一下吧。点击任何一个菜单会在logCat里面打印出当前点击项。

    Android 类似老式转盘电话的双层旋转菜单效果.zip

    本例子是一个环形双层的菜单,可以根据手势的左右滑动,可以进行相应的转动,并且可以点击任意一个选项,动态效果类似于老式的老式的转盘电话,自己脑补一下吧。点击任何一个菜单会在logCat里面打印出当前点击项。 ...

Global site tag (gtag.js) - Google Analytics