总结2D数组

时间:2014-02-17 04:10:58

标签: java arrays loops logic

鉴于我目前的程序,我希望在用户输入所有值后计算每列和每行的总和。我当前的代码似乎只是将数组的值加倍。这不是我想要做的。例如,如果用户输入具有以下值的3x3矩阵1 2 3 2 3 4 3 4 5,它将看起来像我在下面的程序中格式化它。 (见上面的评论)

然后我还想修改代码,以便它挑出对角线并将其打印出来,以便输出为:主对角线:{1,3,5}

3 个答案:

答案 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"); 
          }
        }

    }