[英]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
循环就足够了。 所以,不是从第0th
到nth
对角线,而是相反的; nth
到0th
对角线。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.