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