昨天笔试没做出来斜对角打印,心态崩了,今天再做一遍 /** * @author Eightn0 * @create 2021-03-17 19:03 * 功能:斜对齐打印m*n数组 */ public class PrintNums { public static void main(String[] args) { //提示输入一个m*n的数组 System.out.println("本程序用于斜对齐打印数组,请输入数组的长:"); Scanner scanner = new Scanner(System.in); int m = scanner.nextInt(); System.out.println("请输入数组的高:"); int n = scanner.nextInt(); //生成一个二维数组[m][n],存放输入的数据 System.out.println("请输入数组元素:"); int[][] arr = new int[m][n]; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { arr[i][j] = scanner.nextInt(); } } //生成一个一维数组保存结果 int[] resultArr = new int[m * n]; //观察输出规律,下标和为偶数时,到了第一行就列+1向右移如果到了最后一列就让行加1向下移动。 //下标和为奇数时:如果到了第一列就让行加1向下移动,如果到了最后一行就让列加1向右移动。 int r = 0; int c = 0; for (int i = 0; i < resultArr.length; i++) { resultArr[i] = arr[r][c]; if ((r + c) % 2 == 0) { if (c == (n - 1)) {//元素在最后一列(最后一列要先判断) r++;//往下 } else if (r == 0) {//元素在第一行,往右 c++; } else {//其他情况 r--; c++; } } else {//索引和是奇数 if (r == (m - 1)) {//最后一行 c++;//往右走 } else if (c == 0) {//第一列 r++;//往下走 } else { r++;//行 c--;//列 } } } //输出结果 for (Integer integer: resultArr) { System.out.println(integer); } } }
斜对角打印
最新推荐文章于 2022-04-29 11:49:26 发布