如何修正Java二维数组右下三角打印时元素顺序反转的问题?
解决二维数组右下三角打印顺序反转的问题
我来帮你捋捋这个问题哈:你当前的内层循环是从col=3(也就是每一行的最后一列)开始递减遍历,这就导致每一行的元素是从右往左输出的,自然和你期望的从左往右的右下三角顺序完全相反了。
举个例子:第二行你期望输出7 8,但因为从col=3(对应元素8)开始往左走到col=2(对应元素7),所以输出成了8 7;第三行本来要从10(col=1)到12(col=3),结果从12开始往左打,变成了12 11 10,完全搞反了顺序。
那怎么改呢?其实很简单,把内层循环的遍历方向反过来,从符合条件的最左列开始递增到最后一列就行:
int[][] a3 = { {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16}, }; System.out.println("Lower right triangle"); for (int row = 0 ; row < a3.length ; row++){ // 改动这里:起始列是a3[0].length - row -1,然后递增到最后一列(3) for (int col = a3[0].length - row - 1 ; col <= 3 ; col++) { System.out.print("\t" + a3[row][col]); } System.out.println(); }
运行这段代码后,输出就会和你的期望完全一致:
4
7 8
10 11 12
13 14 15 16
把这些元素连起来就是你要的4 7 8 10 11 12 13 14 15 16。
核心逻辑总结一下:右下三角的每一行,需要打印的列是从总列数 - 当前行号 -1开始,到最后一列结束,而且必须从左到右遍历这些列,而不是反过来从右往左走。
内容的提问来源于stack exchange,提问作者Alaa A
相关产品推荐
相关产品推荐

