2016-05-16 35 views
-1

检查矩阵是否折叠起来。 测试应:java - 运动,对阵列不能正常工作

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

好吧,让我们来看看第一次通过l oop,i和j的价值是什么?这将是i = 2,并且j = 1。mat [2] [1]是2并且mat [1] [2]是9.这些是不相等的,然后您立即将i和j设置为-1。那时,你的循环完成了,不再执行。 –

+0

你想完成什么?检查矩阵是否对称于其对角线? –

+0

我不明白,可以解释一下如何应用这段代码。我如何解决问题 – Liran

回答

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