2016-05-16 5 views
-2

にコードの一部を理解する:forループ秒でジャワ - 私は書く必要が理由アレイ

mat.length-1 

(ループそのすべての条件)。

ループ:

for (int i = 0; i < mat.length-1; i++) { 
     for (int j = 0; j < mat.length-1; j++) { 
      if (i == j) { 
       j++; 
       if (i == mat.length - 1 && j == mat.length - 1) { 
        break; 
       } 
      } 
      if (i != j && mat[i][j] == mat[j][i]) { 
       flag = true; 

      } else { 
       flag = false; 
       if (flag == false) { 
        stop = 1; 
        i = mat.length - 1; 
       } 
      } 
     } 

    } 

Checking program applies

完全なコード:

public class test { 
public static void main(String[] args) { 

    //int[][] mat = { { 9, 2, 4 }, { 2, 9, 7 }, { 4, 7, 9 } }; 
    int[][]mat = { { 9, 2, 3, 4}, 
        { 2, 9, 6, 3}, 
        { 3, 6, 9 ,2}, 
        { 4, 3, 2 ,9}}; 

    boolean flag = true; 
    int stop = 0; 

    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 = 0; i < mat.length-1; i++) { 
     for (int j = 0; j < mat.length-1; j++) { 
      if (i == j) { 
       j++; 
       if (i == mat.length - 1 && j == mat.length - 1) { 
        break; 
       } 
      } 
      if (i != j && mat[i][j] == mat[j][i]) { 
       flag = true; 

      } else { 
       flag = false; 
       if (flag == false) { 
        stop = 1; 
        i = mat.length - 1; 
       } 
      } 
     } 

    } 

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

} 
} 

が、これは仕事ですが、私は

mat.length 

に変更した場合、それが動作しません 負の値を書き込むと、配列の最後に到達する前にiのループが停止します。 説明できますか?

+0

がために(int型私= 0;私は jr593

答えて

0

あなたのコードでは、これらの行はiとjが(mat.length-1)と等しくなることはないので、目的には役立ちません。

if (i == mat.length - 1 && j == mat.length - 1) { 
    break; 
} 

変更あなたのコード:おそらく `コーディングする必要

for (int i = 0; i < mat.length; i++) { 
     for (int j = i+1; j < mat.length; j++) { 
      if (mat[i][j] != mat[j][i]) { 
       flag = false; 
       j = mat.length; 
       i = mat.length; 
      } 
     } 
    } 

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

ありがとうございました – acvbfd123

関連する問題