2017-03-07 7 views
-3

私は任意のサイズ(3x3,4x4など)の正方形のグリッドであるダブル配列を使って作業しています。各行、列、対角線の合計がチェックされるブールメソッドを作成したい互いに等しい。すべての合計が等しい場合、メソッドはブール値trueを返します。 グリッド全体を繰り返し、すべての合計を比較する最良の方法は何ですか?テーブルの合計の比較

//check sum of diagonal 
    int sum = 0; 
    for (int ix = 0; ix < arr.length; ++ix) 
    { 
     sum =+ arr[ix][ix]; 
    } 

    //sum rows 

     for (int row = 0; row < arr.length; ++row) 
     { 
      for (int col = 0; col < arr[row].length; ++col) 
      { 
       sumRow =+ arr[row][col]; 
       if(sumRow == sum) 
       { 
        for (row = 0; row < arr.length; ++row) 
        { 
         for (col = 0; col < arr[row].length; ++col) 
         { 
          sumRow =+ arr[row][col]; 
         } 
        } 
       } 
       else 
       { 
        return bln; 
       } 
      } 
     } 


    if (sumRow == sum) 
    { 
     for (int col = 0; col < arr[0].length; ++col) 
     { 
      for (int row = 0; row < arr.length; ++row) 
      { 
       sumCol =+ arr[row][col]; 
      } 
     } 
    } 


    if (sumRow == sum && sumCol == sum) 
    { 
     bln = true; 
    } 
    else 
    { 
     return bln; 
    } 
    return bln; 
} 
+2

あなたはこれまでに何をしていますか? – nullpointer

+0

3x3,4x4行列がたくさんありますか? – smttsp

+0

私はそれが間違っていることを知っている、私はちょうどそれをより正確に行うことについて行く方法がわからない – shev

答えて

1

は、私は完全なソリューションを実装する習慣が、あなたは正しい軌道に乗っているので、この方法vaildSquareMatrixのコメントは、あなた自身のアイデアを形式化。

import java.util.Arrays; 

class Main { 
    public static void main(String[] args) { 
    //two matrices for testing (Your can create bigger test matrices if you want) 
    int matrix1[][] = {{5,5,5},{5,5,5},{5,5,5}}; 
    int matrix2[][] = {{5,4,3},{2,3,5},{3,2,4}}; 
    System.out.println(validSquareMatrix(matrix1)); // should return true 
    System.out.println(validSquareMatrix(matrix2)); // should return false 
    } 

    public static boolean validSquareMatrix(int matrix[][]) { 
    //System.out.println(Arrays.deepToString(matrix)); // useful for debugging 

    int sum = 0; 

    //TODO: store the value for the total of the first row in sum 

    //TODO: check all other rows to see if the total of each row equals sum, return false if a row's total does not 

    //TODO: check all columns totals see if the total of each column equals sum, return false if a columns's total does not 

    //TODO: check both diagonals total to see if they both equal sum, return false if either diagonals total does not 

    //else return true 
    return true; 
    } 
} 
関連する問題