繁体   English   中英

在负方向对角打印二维数组的Java方法

[英]Java Method that prints 2D array diagonally in negative direction

我能够编写一个打印二维数组的方法:

   {a,b,c},              
   {d,e,f},
   {g,h,i},

如此:

a db gec hf i

这是方法:

 public static void d2(int[][] b){
   for( int k = b.length - 1 ; k > 0; k-- ) {
      for( int j = 0 ; j < b.length ; j++ ) {
        int i = k - j;
        if( i < b.length && j < b.length ) {
            System.out.print(b[i][j] + " " );}
          }
        System.out.println();}
      }
    }   

现在我想写一个在负方向对角打印的方法,这将是:

 g dh aei bf c

我必须在原始方法中更改什么才能使其以其他对角线方式打印出来?

谢谢

没有得到你提到的输出,而是得到了一个ArrayIndexOutOfBoundsException 这是同一程序的修改版本,它提供了预期的输出:

    int b[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
    // for (int i = (b.length * 2) - 1; i >= 0; i--) {
    for (int i = 0; i < (b.length * 2); i++) {
        for (int j = i, k = 0; j >= 0; j--, k++)
            if (j < b.length && k < b.length)
                System.out.print(b[j][k] + " ");
        System.out.println();
    }

要反转,只需取消/注释另一个i循环。 i循环充当计数器或水平跟踪器(就像我们现在遍历的对角线)。 因此,基于i值, j & k初始化自己并在对角线方向循环。

由于方向相同且您只想要相反的顺序,因此单独更改i循环就足够了。 所以,不是从第0thnth对角线,而是相反的; nth0th对角线。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM