2D 4x4阵列中的邻居

时间:2017-02-11 11:29:05

标签: java arrays if-statement for-loop multidimensional-array

好吧......所以我现在已经坚持做了一段时间的学校运动,我真的无法弄清楚如何解决它。我想我真的比起我开始的地方,我希望你们能帮助我。

练习的最后一个含义是代码将输出数组中每个数字的所有邻居。我做了中间四个,他们完美地工作。外部数字对我来说很痛苦,我无法找到一种方法来确保代码“通知”没有更多数字,例如,在左上角的数字上方。

我觉得我知道怎么做:如果数组索引的值高于3或低于0,则使用if语句不会发生某些事情。因为它是一个4x4 2D数组,意味着X轴和Y轴有0,1,2,3个索引。

我希望有人愿意帮助我。非常感谢!这是我到目前为止的代码!

提前致谢

public class P620 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    int[][] counts = 
        {
            { 1, 0, 3, 4},
            { 3, 5, 6, 4 },
            { 9, 7, 1, 4},
            { 1, 1, 1, 1}
        };

    for(int i = 0; i <= 3; i++) {

        for(int j = 0; j <= 3; j++) { 

            System.out.println("Neighbours van de array: " + i + j + " met waarde: " + counts[i][j]);

                if ((i < 4 && i > -1) && (j < 4 && j > -1)) {

                    System.out.println(counts[i - 1][j]); 
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i - 1][j - 1]);
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i - 1][j + 1]);
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i][j - 1]);
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i + 1][j - 1]);         
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i + 1][j]);
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i + 1][j + 1]);
                }

                else if ((i < 4 && i > -1) && (j < 4 && j > -1)) {
                    System.out.println(counts[i][j + 1]);
                }
                else {

                }

            }
        }
}      

}

1 个答案:

答案 0 :(得分:0)

这里有一点提示:

for (int i=0; i < 4; ++i) {
    for (int j=0; j<4; ++j) {
        System.out.println("Neighbours van de array: " + i + j + " met waarde: " + counts[i][j]);

        // print upper-left (northwest) neighbor, if there is one
        if (i >= 1 && j >= 1)
            System.out.println(counts[i-1][j-1]);
        // print upper (north) neighbor, if there is one
        if (i >= 1)
            System.out.println(counts[i-1][j]);
                .
                .
                .
        // print lower (south) neighbor, if there is one
        if (i < 3) 
            System.out.println(counts[i+1][j]);
        // print lower-right (southeast) neighbor, if there is one
        if (i < 3 && j < 3)
            System.out.println(counts[i+1][j+1]);
    }       
}