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

java-练习,在主题数组上不能正常工作,java,arrays,algorithm,Java,Arrays,Algorithm,检查矩阵是否从中折叠。 测试应包括: 代码总是返回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++) {

检查矩阵是否从中折叠。 测试应包括:

代码总是返回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");
    }

}
}
公共类test1{
公共静态void main(字符串[]args){
int[]mat={{1,7,9},{2,9,7},{9,2,1};
布尔标志=真;
对于(int i=0;i-1;i--){
对于(int j=mat.length-1;j>-1;j--){
如果(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;
}
}
}
如果(标志==false){
System.out.println(“非第一折叠矩阵”);
}否则{
System.out.println(“第一折叠矩阵”);
}
}
}

谢谢

您可以使用此功能:

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;
}

好吧,让我想想。。。第一次通过循环时,i和j的值是多少?它将是i=2,j=1。mat[2][1]是2,mat[1][2]是9。它们是不相等的,然后立即将i和j设置为-1。此时,您的循环已经完成,将不再执行。您想完成什么?检查矩阵相对于其反对角线是否对称?我不理解,可以解释如何应用此代码。我如何解决所附图片中概述的问题进行测试
flag = isFolded(mat);