2016-05-16 17 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

まあ、見てみましょう:

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などを...初めてのl oop、iとjの値は何ですか? mat [2] [1]は2、mat [1] [2]は9です。これらは等しくないので、すぐにiとjを-1に設定します。その時点で、ループは完了し、もはや実行されません。 –

+0

あなたは何を達成しようとしていますか?行列がその対角線に対して対称であるかどうかを確認しますか? –

+0

私は理解していない、このコードを適用する方法を説明することができます。問題を解決するにはどうすればいいですか – Liran

答えて

0

あなたはこの機能を使用することができます。

flag = isFolded(mat); 
関連する問題