鉴于我目前的程序,我希望在用户输入所有值后计算每列和每行的总和。我当前的代码似乎只是将数组的值加倍。这不是我想要做的。例如,如果用户输入具有以下值的3x3矩阵1 2 3 2 3 4 3 4 5,它将看起来像我在下面的程序中格式化它。 (见上面的评论)
然后我还想修改代码,以便它挑出对角线并将其打印出来,以便输出为:主对角线:{1,3,5}
答案 0 :(得分:0)
您的代码没问题,但最后要对列进行求和,您应该更改行而不是列。像这样:
System.out.println("\n");
for( int column = 0; column < columns; column++)
{
for(int row = 0; row < rows; row++)
{
array2d[row][column] = array2d[row][column] + array2d[row][column];
System.out.print(array2d[row][column] + " ");
}
System.out.println();
}
答案 1 :(得分:0)
欢迎来到Java世界。首先让我们剖析你的“加倍阵列”代码。
array2d[row][column] = array2d[row][column] + array2d[row][column];
这行代码是个问题。您应用的循环倾向于更新矩阵中每个元素的值。对于例如假设
array2d[1][2]=2
因此上面提到的代码就是这个
array2d[1][2]= array2d[1][2]+array2d[1][2];
基本上是数组值的两倍。
你应该尝试这样的事情:
//To print the values of rows
for(int i=0;i<rows;i++)
{
int rowValue=0;
for(int j=0;j<columns;j++)
{
//Print current row value
rowValue = rowValue + array2d[i][j];
}
System.out.println("ROW" +i+ "=" + rowValue);
}
以下代码将帮助您计算列的值。
//To print values of columns
for(int i=0;i<columns;i++)
{
int columnValue=0;
for(int j=0;j<rows;j++)
{
//Print current row value
columnValue = columnValue + array2d[i][j];
}
System.out.println("COLUMN" +i+ "=" + columnValue);
}
尝试为对角线制作代码。这非常简单。
提示:主对角线的行号与列号相同。
P.S。 - 将scan.close()
添加到您的代码中。始终关闭此类连接以防止资源泄漏。
答案 2 :(得分:0)
对于主对角线
for(int i=0;i<columns;i++)
{
for(int j=0;j<rows;j++)
{
if(i==j){
System.out.println(a[i][j]+ "\n");
}
}
}