我能够编写一个打印2D数组的方法:
{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
我需要更改原始方法以使其以对角线方式打印出来吗?
由于
答案 0 :(得分:0)
没有得到你提到的输出,而是获得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
&amp; k
初始化自己&amp;沿对角线方向循环。
由于方向相同&amp;你只想要一个逆序,只需改变i
循环即可。因此,它不是从0th
到nth
对角线,而是相反的; nth
到0th
对角线。