java多维数组行和和列

时间:2016-04-26 08:54:51

标签: java arrays matrix multidimensional-array

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?并告诉我目前的代码是否有任何缺陷。

1 个答案:

答案 0 :(得分:0)

您的代码中没有任何缺陷。现在,当行数和列数不同时,就会出现这种情况。

声明

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

保持其余代码相同。