【问题标题】:Summing Up A 2D Array总结一个二维数组
【发布时间】:2014-02-17 04:10:58
【问题描述】:

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

然后我还想修改代码,使其挑选出对角线并将其打印出来,以便输出显示为:Main Diagonal: {1,3,5}

【问题讨论】:

    标签: java arrays loops logic


    【解决方案1】:

    您的代码没问题,但在最后对列求和时,您应该更改行而不是列。像这样:

    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();
        }
    

    【讨论】:

    • 不,这不是我要找的。我希望添加每一列和每一行,然后输出看起来就像我在代码顶部的注释中所做的那样。
    【解决方案2】:

    欢迎来到 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() 添加到您的代码中。始终关闭此类连接以防止资源泄漏。

    【讨论】:

      【解决方案3】:

      对于主对角线

      for(int i=0;i<columns;i++)
          {
          for(int j=0;j<rows;j++)
          {
               if(i==j){
                System.out.println(a[i][j]+ "\n"); 
                }
              }
      
          }
      

      【讨论】:

        猜你喜欢
        • 2021-06-04
        • 2022-12-07
        • 1970-01-01
        • 2017-10-12
        • 2021-12-31
        • 2012-04-10
        • 1970-01-01
        • 2012-07-05
        相关资源
        最近更新 更多