【问题标题】:java multidimensional arrays row sum and column sumjava多维数组行和和列和
【发布时间】:2016-08-19 23:43:19
【问题描述】:
public static void main(String[] args) {
    int rows, cols, j, i;
    Scanner sc = new Scanner(System.in);
    System.out.println("enter no of rows and columns respectively");
    rows = sc.nextInt();
    cols = sc.nextInt();
    int[][] matrix = new int[rows+1][cols+1];
    System.out.println("enter elements");
    for(i = 0; i < rows; i++)
    {
        for(j = 0; j < cols; j++)
        {
            matrix[i][j] = sc.nextInt();
        }
    }
    System.out.println("after sum");
    int grandtotal = 0;
    for(i = 0; i < rows; i++)
    {
        int rowsum = 0;
        int colsum = 0;
        for(j = 0; j < cols; j++)
        {
            rowsum += matrix[i][j];
            colsum += matrix[j][i];
        }
        matrix[i][j] = rowsum;
        grandtotal += rowsum;
        matrix[j][i] = colsum;
    }
    j = cols;
    matrix[i][j] = grandtotal;

上面的代码工作正常,但我的问题是:使用这个逻辑,如果行数和列数不一样,如何找到矩阵的grandtotal?并告诉我我当前的代码是否有任何缺陷。

【问题讨论】:

  • 遍历所有单元格并将它们求和的问题在哪里?如果每行/列的列/行数不同,则使用matrix[i].length 进行内部循环。或者是在最后一行中找到最后一个单元格的问题?如果是这样,请尝试row[] = matrix[matrix.length-1];row[row.length-1]=grandtotal;
  • @Pratik Thacker 作为一名计算机工程师,您应该始终考虑重用现有解决方案的解决方案。就像在这种情况下一样。
  • @Pratik Thacker 不仅代码变得更小,而且可以处理与行数和列数相关的任何输入。

标签: java arrays matrix multidimensional-array


【解决方案1】:

您的代码没有缺陷。现在到了行数和列数不同的地步。

声明

matrix[j][i] = colsum;

现在会给出不正确的结果,因为现在行数和列数不同。

只需更改语句即可轻松解决此问题

colsum += matrix[j][i];

到:

matrix[rows][j] += matrix[i][j];

现在你不需要声明了

matrix[j][i] = colsum;

因此,通过这些简单的修改,不同列数和行数的代码将是:

for( i = 0;i < rows;i++)
{
    int rowsum=0;
    for( j = 0;j < cols;j++)
    {
    rowsum += matrix[i][j];
    matrix[rows][j] += matrix[i][j];
    }
    matrix[i][j] = rowsum;
    grandtotal += rowsum;        
}

保持其余代码相同。

【讨论】:

  • 一些空格和代码格式将使您的代码可读。
猜你喜欢
  • 2011-02-17
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2011-07-15
相关资源
最近更新 更多