沿对角线遍历二维数组

Iterating diagonally through a 2d array

我必须遍历一个二维字符数组。我已经有了迭代的代码 / 但是当涉及到 .

时我迷路了

这是我的二维数组:

a,v,i,o,n,l
t,o,t,o,l,l
m,a,r,c,o,e
s,a,g,r,c,i
o,e,n,z,o,g
s,t,r,a,r,u

我已经有:

a
tv
moi
....

我需要:

l
nl
ole
....

这里是迭代代码 / :

int size = 6;

for (int k = 0 ; k < size ; k++) {
    for (int j = 0 ; j <= k ; j++) {
        int i = k - j;
        System.out.print( lista[i][j] + " " );
    }
    System.out.println();
}

for (int k = size - 2 ; k >= 0 ; k--) {
    for (int j = 0 ; j <= k ; j++) {
        int i = k - j;
        System.out.print(lista[size - j - 1][size - i - 1] + " " );
    }
    System.out.println();
}

试试这个:

public class Matrix {
    public static void main(String[] args) {
        char[][] arr = {
                { 'a', 'v', 'i', 'o', 'n', 'l' }, 
                { 't', 'o', 't', 'o', 'l', 'l' },
                { 'm', 'a', 'r', 'c', 'o', 'e' }, 
                { 's', 'a', 'g', 'r', 'c', 'i' }, 
                { 'o', 'e', 'n', 'z', 'o', 'g' },
                { 's', 't', 'r', 'a', 'r', 'u' } };
        for (int n = -arr.length; n <= arr.length; n++) {
            for(int i = 0; i < arr.length; i++){
                if((i-n>=0)&&(i-n<arr.length)){
                    System.out.print(arr[i][i-n]);
                }
            }
            System.out.println();
        }
    }
}

您可以使用自己的代码。您唯一需要做的就是先转置矩阵。我已经为您编写并测试了它。 myArray 是您提供给我们作为输入的数组,yourArray 是您需要在代码中用作 lista 的数组。

for (int i = 5; i >= 0; i--) {
    for (int j = 0; j <= 5; j++) {
       yourArray[5 - i][j] = myArray[j][i];
    }
}