本道题是我从网上见到的,由于是一道好久没作的循环题,本身的思路也是陷入了一些思惟陷阱中,后来通过把大脑放空,从新看这道题后,思路立马就出来了。
题目就是完成以下图所示的效果:
我一开始是想着将它按照奇偶行来区分每一行都是一个数组,来将这些数组进行输出,后来发现老是没法跳出循环,就改用了第二种思路:将(行列)个数放入一个数组中,当奇数行时采用正序排列,偶数行采用倒序排列就ok啦。*
有了总体的思路后就须要考虑倒序排列的问题了,其实就是将数组的位置能用行和列表示出来。java
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++; } } }
接下来就能够完善所有代码了,所有代码以下,有须要的能够自行研究web
// 利用数组打印出蛇形结构 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能够在公众号上边与我交流哦。
svg