如何在Java中查找矩阵元素的总和?


在Java中,数组是一个对象。它是一种非基本数据类型,用于存储相似数据类型的值。Java中的矩阵只不过是一个多维数组,它表示多行和多列。

这里我们给出了一个包含一组元素的矩阵,根据题目要求,我们需要找出矩阵内所有元素的总和。

让我们深入研究这篇文章,了解如何使用Java编程语言来实现它。

为了向您展示一些实例

实例1

给定矩阵 = (此处应插入矩阵数据)

21 	22	23
24	25	26
27	28	29
  • 上述矩阵元素之和 = 315

实例2

给定矩阵 = (此处应插入矩阵数据)

121 	222	243	432
124	245	256	657
237	258	229	345
176	453	756	343
  • 上述矩阵元素之和 = 4194

实例3

给定矩阵 = (此处应插入矩阵数据)

1 	2	3
4	5	6
7	8	9
  • 上述矩阵元素之和 = 45

算法

算法1

  • 步骤1 − 声明一个二维矩阵。

  • 步骤2 − 调用用户自定义方法来查找矩阵中所有元素的总和。

  • 步骤3 − 该方法使用两个嵌套循环迭代矩阵中的每个元素,并将当前元素的值添加到运行总计中。

  • 步骤4 − 该方法返回矩阵中所有元素的总和。

算法2

  • 步骤1 − 声明一个二维矩阵。

  • 步骤2 − 调用用户自定义方法来查找矩阵中所有元素的总和。

  • 步骤3 − 该方法使用Arrays.stream将二维矩阵转换为一维元素流,并使用forEach将每个元素的值添加到运行总计中。

  • 步骤4 − 该方法返回矩阵中所有元素的总和。

算法3

  • 步骤1 − 声明一个二维矩阵。

  • 步骤2 − 调用用户自定义方法来查找矩阵中所有元素的总和。

  • 步骤3 − 该方法使用Stream API将二维矩阵转换为一维元素流,并使用reduce查找流中所有元素的总和。

  • 步骤4 − 该方法返回矩阵中所有元素的总和。

语法

要获取数组的长度(数组中的元素个数),数组有一个内置属性,即length

以下是它的语法:

array.length

其中,“array”指的是数组引用。

多种方法

我们提供了不同的方法来解决这个问题。

  • 使用嵌套循环

  • 使用Stream API

  • 使用Arrays.stream和flatMap

让我们逐一查看程序及其输出。

方法1:使用嵌套循环

在这种方法中,矩阵元素将在程序中初始化。然后通过将数组作为参数传递来调用用户定义的方法,并且在方法内部根据算法使用嵌套循环计算给定矩阵的元素之和。

示例 (此处应插入代码示例)

public class Main {
   public static void main(String[] args) {
      
      // declare and initialize the 2D matrix
      int[][] inputMatrix = {{10, 20, 30}, {40, 50, 60}, {70, 80, 90}};
      
      // Call the user-defined method to get the sum of all elements
      int sum = sumOfMatElmt(inputMatrix);
      
      // Print the result
      System.out.println("Sum of matrix elements: " + sum);
   }
   
   //user-defined method to find the sum of the elements
   public static int sumOfMatElmt(int[][] mat) {
      
      // declare and initialize the sum variable
      int sum = 0;
      for (int i = 0; i < mat.length; i++) {
         
         // initiate the looping over each column of the current row
         for (int j = 0; j < mat[i].length; j++) {
            
            // Add the current element to the sum
            sum += mat[i][j];
         }
      }
      
      // Return the result
      return sum;
   }
}

输出 (此处应插入输出示例)

Sum of matrix elements: 450

方法2:使用Stream API

在这种方法中,矩阵元素将在程序中初始化。然后通过将数组作为参数传递来调用用户定义的方法,并且在方法内部根据算法使用Stream API计算给定矩阵的元素之和。

示例 (此处应插入代码示例)

import java.util.stream.IntStream;
public class Main {
   public static void main(String[] args) {
      
      // declare and Initialize the 2D matrix
      int[][] inputMatrix = {{11, 22, 33}, {44, 55, 66}, {77, 88, 99}};
      
      // Call the sumOfMatrixElements method to get the sum of all elements
      int sum = sumOfMatElmnt(inputMatrix);
      
      // Print the result
      System.out.println("Sum of matrix elements: " + sum);
   }
   public static int sumOfMatElmnt(int[][] mat) {
      
      // Create an IntStream for each row of the matrix
      // and use map to get the sum of each row
      // Finally, use sum method to get the sum of all rows
      return IntStream.range(0, mat.length)
         .map(i -> IntStream.of(mat[i]).sum())
         .sum();
   }
}

输出 (此处应插入输出示例)

Sum of matrix elements: 495

方法3:使用Arrays.stream和flatMap

在这种方法中,矩阵元素将在程序中初始化。然后通过将数组作为参数传递来调用用户定义的方法,并且在方法内部根据算法使用Arrays.stream和flatMap计算给定矩阵的元素之和。

示例 (此处应插入代码示例)

import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
   public static void main(String[] args) {
      
      // Declare a 2D matrix
      int[][] matrix = {{12, 23, 34}, {45, 56, 67}, {78, 89, 90}};
      
      // Call the calculateSumOfElements method to find the sum of all elements
      int sum = calculateSumOfElements(matrix);
      
      // Print the result
      System.out.println("The sum of all elements in the matrix is: " + sum);
   }
   public static int calculateSumOfElements(int[][] matrix) {
      
      // Use Arrays.stream and flatMap to convert the 2D matrix into a 1D stream of elements
      return Arrays.stream(matrix)
         .flatMapToInt(IntStream::of)
         .sum();
   }
}

输出 (此处应插入输出示例)

The sum of all elements in the matrix is: 494

在这篇文章中,我们探讨了使用Java编程语言查找矩阵和的不同方法。

更新于:2023年5月4日

3K+浏览量

开启您的职业生涯

完成课程后获得认证

开始学习
广告