【发布时间】:2014-02-17 04:10:58
【问题描述】:
鉴于我当前的程序,我希望它在用户输入所有值后计算每列和每行的总和。我当前的代码似乎只是将数组的值加倍。这不是我想要做的。例如,如果用户输入具有以下值的 3x3 矩阵 1 2 3 2 3 4 3 4 5 它看起来就像我在下面的程序中对其进行了格式化。 (见顶部评论)
然后我还想修改代码,使其挑选出对角线并将其打印出来,以便输出显示为:Main Diagonal: {1,3,5}
【问题讨论】:
鉴于我当前的程序,我希望它在用户输入所有值后计算每列和每行的总和。我当前的代码似乎只是将数组的值加倍。这不是我想要做的。例如,如果用户输入具有以下值的 3x3 矩阵 1 2 3 2 3 4 3 4 5 它看起来就像我在下面的程序中对其进行了格式化。 (见顶部评论)
然后我还想修改代码,使其挑选出对角线并将其打印出来,以便输出显示为:Main Diagonal: {1,3,5}
【问题讨论】:
您的代码没问题,但在最后对列求和时,您应该更改行而不是列。像这样:
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();
}
【讨论】:
欢迎来到 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);
}
尝试编写对角线的代码。它非常简单。
提示:主对角线的行号和列号相同。
附: - 将scan.close() 添加到您的代码中。始终关闭此类连接以防止资源泄漏。
【讨论】:
对于主对角线
for(int i=0;i<columns;i++)
{
for(int j=0;j<rows;j++)
{
if(i==j){
System.out.println(a[i][j]+ "\n");
}
}
}
【讨论】: