完成解决方案所需的输入

时间:2015-10-13 18:18:48

标签: java arrays multidimensional-array

我正在尝试使用Java解决多维数组的问题。对于给定的二维矩阵,我需要打印出对角线出现的所有数字。我已经完成了一个场景,但没有能够完成其余的元素

public class TwoDimensionalArray {

    private static int[][] array = {{1,2,3,4},{5,6,7,8},{9,10,11,12,}, {13,14,15,16}};

    public static void main(String args[]){

        for (int i=0;i<4; i++){
            for(int j=0;j < 4; j++){
                System.out.print(" "+ array[i][j] +" ");
            }
            System.out.println();
        }

        System.out.println();

        for (int i = 0;i < 4; i++){
            int offset = 0;
            for(int j = offset;j <= i; j++){
                System.out.print("i >> "+i+" ");
                System.out.print("j >>  "+j);
                System.out.println(" == "+ array[i][i+offset] +" ");
            }
            offset++;
        }
    }
}

我开始编写下面的代码,以便正确打印第一个对角元素。

    for (int i = 0;i < 4; i++){
        int offset = 0;
        System.out.print(array[i][i+offset] +" ");
        offset++;
    }

输出:1 6 11 16

但是当我尝试通过添加内部for循环来扩展相同的方法时,我开始每次从0迭代到i,这导致它多次打印元素而不是正确的输出。我的方法是正确的还是我在实现内部for循环时遗漏了一些东西。

所需的输出应如下所示:

1 6 11 16
2 7 12
3 8
4
5 10 15
6 11 16
7 12
8
9 14
10 15
11 16
12

这不是作业。我只是想提高我的编程技巧。还请让我知道这个问题的难度级别在1到5的范围内,5是最难的,1是简单的。

1 个答案:

答案 0 :(得分:1)

我想你正在寻找这样的东西:

private static int[][] array = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12,}, {13, 14, 15, 16}};

private static void f(int y, int x) {
    while ((y < 4) && (x < 4))
        System.out.print(array[y++][x++] + " ");
    System.out.println();
}

public static void main(final String args[]) {
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
            f(i, j);
}