我试图打印出2D数组的右下三角形

时间:2018-05-06 01:49:05

标签: java arrays

我正在尝试打印出2D数组的右下角三角形,但我得到了反转的元素三角形:

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
8   7
12  11  10
16  15  14  13

而不是:

             4
          7  8
      10 11 12
   13 14 15 16

4 个答案:

答案 0 :(得分:1)

以下是您的解决方案..尝试理解逻辑并询问是否有任何疑问。希望它可以帮到你

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();
}

答案 1 :(得分:0)

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 = 0 ; col <= a3[row].length-1 ; col++) {
        if(col < a3[row].length-row-1){
            System.out.print("\t");
        }else{
            System.out.print("\t" + a3[row][col]);
        }
    }
    System.out.println();
}

输出:

Lower right triangle
          4
       7  8
   10 11 12
13 14 15 16

答案 2 :(得分:0)

在没有给出完整答案的情况下,请考虑以下事项......在您的解决方案中,您从右到左工作。为了最好地解决这个问题,你应该从左到右打印(这是遍历的顺序)。为此,您还需要利用行和列索引来确定打印顺序:

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

答案 3 :(得分:0)

这是另一种打印方式。你保留一个标志来检查你是否缩进了为行打印的第一个数字。此缩进将取决于您开始打印的列。然后,随后,所有打印的数字将在它们后面附加一个缩进。

初始缩进发生的次数基于col,其计算方式为a3[0].length - row - 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();
        }
    }

输出:

            4
        7   8
    10  11  12
13  14  15  16

要直观地了解缩进的应用方式,请使用X代替\t。这是输出。希望这有助于理解初始缩进的应用方式,然后是后续的缩进。

XXXX4
XXX7X8
XX10X11X12
X13X14X15X16