本道題是我從網上見到的,由於是一道好久沒作的循環題,本身的思路也是陷入了一些思惟陷阱中,後來通過把大腦放空,從新看這道題後,思路立馬就出來了。
題目就是完成以下圖所示的效果:
我一開始是想着將它按照奇偶行來區分每一行都是一個數組,來將這些數組進行輸出,後來發現老是沒法跳出循環,就改用了第二種思路:將(行列)個數放入一個數組中,當奇數行時採用正序排列,偶數行採用倒序排列就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