如何在Java中获得nxn矩阵每列的和?

如何在Java中获得nxn矩阵每列的和?,java,matrix,Java,Matrix,我在学Java。我想编写一段代码,用于检查返回的2D数组是否为幻方 为了做到这一点,我必须编写两个不同的方法,其中一个用于检查每列中所有元素的总和是否相等。我可以处理行,但当我试图处理列时,我有点困惑。我的朋友说这和检查所有行的和是否相等的方法几乎是一样的。我对行的方法如下 public static boolean rowSumsOK(int arr[][], int total) { boolean a = false; total = sumOneRow(arr);

我在学Java。我想编写一段代码,用于检查返回的2D数组是否为幻方

为了做到这一点,我必须编写两个不同的方法,其中一个用于检查每列中所有元素的总和是否相等。我可以处理行,但当我试图处理列时,我有点困惑。我的朋友说这和检查所有行的和是否相等的方法几乎是一样的。我对行的方法如下

    public static boolean rowSumsOK(int arr[][], int total) {
    boolean a = false;
    total = sumOneRow(arr);
    int x=0; // this will be counted sum for each rows

    for (int i=0; i<arr.length; i++){
        for (int j=0; j<=arr.length; j++){
            x = x + arr[i][j];
        }
        if(x != total){
            a = false;
            break;
        }

        else
            a = true;
    }

    return a;
}
我还是有点困惑。你能给我解释一下这个方法吗,或者给我展示一下另一种方法吗?

我会保留另一个数组(columnTotal),它包含第I列中元素的总和。然后循环遍历这些列,每次遍历一列,并对该列中的行求和。基本上,它是行求和的代码,但是内部循环和外部循环是相反的。试着这样做:

int columnTotal[] = new int[array.length];

for(int column= 0; column< array.length; column++)
{
    columnTotal[column] = 0;
    for(int row= 0; row < array.length; row++)
    {
        columnTotal[column] += array[row][column];
    }
}
int columnttotal[]=new int[array.length];
for(int column=0;column
公共静态布尔列SUMSOK(int-arr[][],int-total)
{
对于(int j=0;j
给您的建议应该是列和。如果你对此感到困惑,我建议你多研究一下什么是数组和/或for循环是如何工作的。我不知道这是怎么发生的,但我只是明白了我在这里发布后说的话。也许我没有集中精力去理解他的意思。谢谢,我想应该是columnTotal[column]+=array[row][column];谢谢你的回复,我理解。它看起来简洁明了。Timur,再次检查我的代码,有一些索引错误,它的工作方式是尝试一个接一个地计算每个列元素的和,然后将该列的和与“total”参数进行比较,如果它们不相等,则该方法立即返回false,否则它将继续计算。Hi-Declarer,很抱歉反应太晚。我又读了一遍你的代码,我明白了。荣誉(y)
int columnTotal[] = new int[array.length];

for(int column= 0; column< array.length; column++)
{
    columnTotal[column] = 0;
    for(int row= 0; row < array.length; row++)
    {
        columnTotal[column] += array[row][column];
    }
}
    public static boolean columnSumsOK ( int arr[][], int total )
    {
        for ( int j = 0; j < arr [ 0 ].length; j++ )
        {
            int sum = 0;
            for ( int i = 0; i < arr.length; i++ )
                sum = sum + arr [ i ] [ j ];
            if ( sum != total )
                return false;
        }
        return true;
    }