java - 练习,不能在主题数组上正常工作

时间:2016-05-16 20:17:07

标签: java arrays algorithm

检查矩阵是否折叠起来。 测试应该:

image

代码总是返回false,我不明白为什么。代码有什么问题?

代码:

public class test1 {
public static void main(String[] args) {
int[][] mat = { { 1, 7, 9 }, { 2, 9, 7 }, { 9, 2, 1 } };

    boolean flag = true;

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

    for (int i = mat.length - 1; i > -1; i--) {
        for (int j = mat.length - 1; j > -1; j--) {

            if (i == j) {
                j--;
            }

            if (mat[i][j] != mat[j][i]) {
                flag = false;

                System.out.println("mat[i][j]" + mat[i][j] + " " + i + " "
                        + j);
                j = -1;
                i = -1;
            }

        }
    }

    if (flag == false) {
        System.out.println("Not first folded matrix");
    } else {
        System.out.println("First folded matrix");
    }

}
}

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用此功能:

public static boolean isFolded(int[][] mat){
    for (int i = 0; i < mat.length; i++) {
        for (int j = 0; j < mat.length; j++) {

            if (i == j) {
                continue;
            }

            if (mat[i][j] != mat[mat.length - 1 - j][mat.length - 1 - i]) {

                System.out.println("mat[i][j] " + mat[i][j] + "  i:" + i + " j:"
                        + j);
                return false;
            }

        }
    }
    return true;
}

main中将其称为:

flag = isFolded(mat);