一道简单的for循环面试题(数字龙形排序)

本道题是我从网上见到的,因为是一道很久没做的循环题,自己的思路也是陷入了一些思维陷阱中,后来经过把大脑放空,重新看这道题后,思路立马就出来了。
题目就是完成如下图所示的效果:
在这里插入图片描述我一开始是想着将它按照奇偶行来区分每一行都是一个数组,来将这些数组进行输出,后来发现总是无法跳出循环,就改用了第二种思路:将(行列)个数放入一个数组中,当奇数行时采用正序排列,偶数行采用倒序排列就ok啦。*
有了整体的思路后就需要考虑倒序排列的问题了,其实就是将数组的位置能用行和列表示出来

for (int i = 0; i < hang; ++i) {
				if (i % 2 != 0) {
					for (int j = 0; j < lie; j++) {
						// 赋值
						arr[i * lie + lie - j - 1] = start;
						start++;
					}
				} else {
					for (int j = 0; j < lie; j++) {
						arr[i * lie + j] = start;
						start++;
					}
				}
			}

接下来就可以完善全部代码了,全部代码如下,有需要的可以自行研究

// 利用数组打印出蛇形结构
		public static void main(String[] args) {
			Scanner sc = new Scanner(System.in);
			System.out.print("请输入开始数据:");
			int start = sc.nextInt();
			System.out.print("请输入行数:");
			int hang = sc.nextInt();
			System.out.print("请输入列数:");
			int lie = sc.nextInt();
			// 可以知道总的数数量是 hang*lie,所以可以从start开始 一个一个的添加进数组里
			int[] arr = new int[hang * lie];
			int count = 0;
			for (int i = 0; i < hang; ++i) {
				if (i % 2 != 0) {
					for (int j = 0; j < lie; j++) {
						// 赋值
						arr[i * lie + lie - j - 1] = start;
						start++;
					}
				} else {
					for (int j = 0; j < lie; j++) {
						arr[i * lie + j] = start;
						start++;
					}
				}
			}
			for (int i = 0; i < arr.length; i++) {
				System.out.print(arr[i] + "\t");
				count++;
				if (count % lie == 0) {
					System.out.println();
				}
			}
		}

我是一个正在偷偷努力学习java的大胖子,有任何问题大家都可以发在我的个人公众号上边,我也会尽量帮大家解决,当然,我也只是一个正在学习java的人,并不能保证“每个(其实是大部分问题都不能)”问题都能回答上来。

还有我的个人公众号会不定时更新我的java学习之路,大家如果也在学习java可以在公众号上边与我交流哦。
在这里插入图片描述

转载于:https://www.cnblogs.com/apbddpz/p/11159656.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值