2016-05-16 36 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);