Java 我试图打印出二维数组的右下三角形

Java 我试图打印出二维数组的右下三角形,java,arrays,Java,Arrays,我试图打印二维数组的右下角三角形,但我得到了相反的元素三角形: 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++

我试图打印二维数组的右下角三角形,但我得到了相反的元素三角形:

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++){
        for (int col = 3 ; col >= a3[0].length-row-1 ; col--) {

            System.out.print("\t" + a3[row][col]);
        }
        System.out.println();
    }
而不是:

             4
          7  8
      10 11 12
   13 14 15 16

这是给你的解决办法。。试着理解逻辑并询问是否有任何疑问。希望对你有帮助

for (int row = 0 ; row < a3.length ; row++){
    for (int col = 0 ; col < a3[0].length ; col++) {
          if(col>=a3[0].length-1-row){
              System.out.print(a3[row][col]+"\t");

          } else {
              System.out.print("\t");
          }
    }
    System.out.println();
}
for(int row=0;row=a3[0]。长度为1行){
系统输出打印(a3[行][列]+“\t”);
}否则{
系统输出打印(“\t”);
}
}
System.out.println();
}

未给出完整的答案,请考虑以下几点…在您的解决方案中,您是从右向左工作的。为了最好地解决这个问题,您应该从左向右打印(这是遍历的顺序)。为此,您同样需要利用行和列索引来确定打印顺序:

            if(((a3[0].length - 1) - row) <= col) {
                System.out.print(a3[row][col] + "\t");
            } else {
                System.out.print("\t");
            }

if(((a3[0].长度-1)-行)这里是另一种打印方式。您可以保留一个标志来检查您是否已缩进为一行打印的第一个数字。此缩进将取决于您开始打印的列。然后,所有打印的数字都将在其后面追加一个缩进

初始缩进发生的次数基于
col
,计算为
a3[0]。长度-行-1

for (int row = 0; row < a3.length; row++) {
            boolean formatted = false;
            for (int col = a3[0].length - row - 1; col <= 3; col++) {

                if (!formatted) {
                    for (int i = 0; i <= col; i++) {
                        System.out.print("\t");
                        formatted = true;
                    }
                }
                System.out.print(a3[row][col] + (col < 3?"\t":""));
            }
            System.out.println();
        }
    }
要直观地查看缩进是如何应用的,请使用
X
代替
\t
。这是输出。希望这有助于理解初始缩进是如何应用的,然后是后续缩进

XXXX4
XXX7X8
XX10X11X12
X13X14X15X16

您是如何尝试修复它的?您是如何尝试修复它的?它显示上面的方式的原因是,您可能没有让它用空格打印出来,而是从[0][0]开始,而不是从[][array[0]。length-1]你真的认为给他家庭作业的答案对他有帮助吗?我希望他能理解其中的逻辑并澄清其中的疑问逻辑是不言自明的
            if(((a3[0].length - 1) - row) <= col) {
                System.out.print(a3[row][col] + "\t");
            } else {
                System.out.print("\t");
            }
for (int row = 0; row < a3.length; row++) {
            boolean formatted = false;
            for (int col = a3[0].length - row - 1; col <= 3; col++) {

                if (!formatted) {
                    for (int i = 0; i <= col; i++) {
                        System.out.print("\t");
                        formatted = true;
                    }
                }
                System.out.print(a3[row][col] + (col < 3?"\t":""));
            }
            System.out.println();
        }
    }
            4
        7   8
    10  11  12
13  14  15  16
XXXX4
XXX7X8
XX10X11X12
X13X14X15X16