打印 2 个数组的行和列的总和

Posted

技术标签:

【中文标题】打印 2 个数组的行和列的总和【英文标题】:Printing the sum of rows and columns of 2 arrays 【发布时间】:2019-05-16 23:36:56 【问题描述】:

我完全被困住了。任何帮助,将不胜感激。问题问

1.创建两个二维数组/矩阵(随机数,范围 1 -500,其中 1 和 500 应声明为类常量)。两者的尺寸相同。

2.打印数组。

3.调用一个方法来对两个矩阵求和。 2个矩阵matrix_1和matrix_2之和是一个矩阵结果,其中对于每一行r和每一列c, result_rc= matrix_1_rc+ matrix_2_rc

4.打印得到的矩阵。

我被困在 3 和 4 上。部分问题是我不明白 3 所要求的逻辑。我是否得到每行和每列的总和,并将其添加到第二个数组的行和列的总和中。第二个问题是我完全不知道下一步该做什么。

我已经研究了几个小时并尝试了不同的东西。

import java.util.*;

public class Lab12p2 
    public static final int MAX = 500;
    public static final int MIN = 1;

    public static void main(String[] args) 
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the number of times to run the program");
        int start = scan.nextInt();
        while (start < 0) 
            System.out.println("Error! Should be positive. REENTER");
            start = scan.nextInt();
        
        // end number of times validation
        while (start > 0)// counter loop for how many times to run program 
            System.out.println("Enter the size of the 2 arrays");
        int SIZE = scan.nextInt();
        while (SIZE < 0) 
            System.out.println("Error! Should be positive. REENTER");
            SIZE = scan.nextInt();
         // size validation
          // start of methods
        int[][] a = new int[SIZE][SIZE];
        int[][] b = new int[SIZE][SIZE];// second array
        System.out.println("The first array is ");
        System.out.println();
        randArray(a, SIZE, SIZE, MIN, MAX);
        System.out.println("The second array is ");
        System.out.println();
        randArray(b, SIZE, SIZE, MIN, MAX);
        sum2arrays(a, b, SIZE, SIZE);
        start--;
    

    public static void randArray(int[][] matrix, int row, int col, int low, int up) 
        Random rand = new Random();
        for (int r = 0; r < row; r++) 
            for (int c = 0; c < col; c++) 
                int random = matrix[r][c] = rand.nextInt(up - low + 1) + low;
                System.out.print("\t" + random);
            
            System.out.println();
        
    

    public static void sum2arrays(int[][] matrix1, int[][] matrix2, int col, int row) 
        int sumrow;
        int sumtotalrow = 0;
        for (int r = 0; r < matrix1.length; r++) 
            sumrow = 0;
            for (int c = 0; c < matrix1[r].length; c++) 
                sumrow = sumrow + matrix1[r][c];
            
            sumtotalrow = sumtotalrow + sumrow;
        
        // testing
        System.out.println("The sum of ALL the elements/row  = " + sumtotalrow);
    

应该 调用一个方法来对 2 个矩阵求和。两个矩阵matrix_1matrix_2 之和是一个矩阵结果,其中对于每个row rcolumn cresult_rc= matrix_1_rc+ matrix_2_rc(我不知道那是什么意思)然后打印得到的矩阵

【问题讨论】:

如果有的话,试着问问你的老师或导师。 没有。数字 3 表示将矩阵 1 中的每个数字与矩阵 2 中相同位置的数字相加。因此,如果矩阵 1 的左上角有 5,而矩阵 2 的左上角有 8,则矩阵 1 + 矩阵 2左上角将有 13 个。并对矩阵的每个元素做同样的事情。当然,这要求所有矩阵具有相同的行数和相同的列数。 谢谢。是的,数组是具有相同维度的随机数。生病了。再次感谢您。 IntStream.range(0, SIZE).mapToObj(r -&gt; IntStream.range(0, SIZE).map(c -&gt; matrix1[r][c] + matrix2[r][c]).toArray()).toArray(int[][]::new) 这个是放在main方法还是sum数组方法? 【参考方案1】:
public static void sum2arrays(int[][] matrix1, int[][]matrix2,int col,int row)

int sumrow;
ArrayList <Integer> three=new ArrayList<Integer>();
for (int r = 0; r < matrix1.length; r++)
 
    sumrow = 0; 
    for (int c = 0; c < matrix1[r].length; c++)
     
        three.add( matrix2[r][c] + matrix1[r][c]); 
    




   
        System.out.println("The matrix result is ");
         System.out.println(three);


 

【讨论】:

以上是关于打印 2 个数组的行和列的总和的主要内容,如果未能解决你的问题,请参考以下文章

二维数组的 每行的元素个数必须一样吗?

寻找二维数组中唯一的行和列的索引,以及这些位置上元素的最小和。

二维数组a[11][11]数组元素个数

C#添加2个数组的总和

题目1191:矩阵最大值

检查给定行和列总和是不是只有 2 行的二进制矩阵