如何在 Java 中求矩阵元素之和?

javaobject oriented programmingmatrix

在 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 - 声明一个 2D 矩阵。

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

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

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

算法 2

  • 步骤 1 - 声明一个 2D 矩阵。

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

  • 步骤 3 - 该方法使用 Arrays.stream 将 2D 矩阵转换为 1D 元素流,并使用 forEach 将每个元素的值添加到累计总数中。

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

算法 3

  • 步骤 1 - 声明一个 2D 矩阵。

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

  • 步骤 3 - 该方法使用 Stream API 将 2D 矩阵转换为 1D 元素流,并减少以查找矩阵中所有元素的总和流。

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

语法

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

下面是它的语法 -

array.length

其中,"array"是指数组引用。

多种方法

我们以不同的方法提供了解决方案。

  • 使用嵌套循环

  • 使用 Stream API

  • 使用 Arrays.stream 和flatMap:

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

方法 1:使用嵌套循环

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

示例

public class Main {
   public static void main(String[] args) {
      
        // 声明并初始化二维矩阵
        int[][] inputMatrix = {{10, 20, 30}, {40, 50, 60}, {70, 80, 90}};
        
        // 调用用户定义的方法获取所有元素的总和
        int sum = sumOfMatElmt(inputMatrix);
        
        // 打印结果
        System.out.println("矩阵元素总和:" + sum);
   }
   
   //用户定义的方法求元素之和
   public static int sumOfMatElmt(int[][] mat) {
      
      // 声明并初始化 sum 变量
      int sum = 0;
      for (int i = 0; i < mat.length; i++) {
         
         // 开始循环当前行的每一列
         for (int j = 0; j < mat[i].length; j++) {
            
            // 将当前元素添加到总和中
            sum += mat[i][j];
         }
      }
      
      // 返回结果
      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) {
      
        // 声明并初始化二维矩阵
        int[][] inputMatrix = {{11, 22, 33}, {44, 55, 66}, {77, 88, 99}};
        
        // 调用 sumOfMatrixElements 方法获取所有元素的总和
        int sum = sumOfMatElmnt(inputMatrix);
        
        // 打印结果
        System.out.println("矩阵元素总和:" + sum);
   }
   public static int sumOfMatElmnt(int[][] mat) {
      
        // 为矩阵的每一行创建一个 IntStream
        // 并使用 map 获取每行的总和
        // 最后,使用 sum 方法获取所有行的总和
      	return IntStream.range(0, mat.length)
         .map(i -> IntStream.of(mat[i]).sum())
         .sum();
   }
}

输出

矩阵元素总和: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) {
      
        // 声明一个二维矩阵
        int[][] matrix = {{12, 23, 34}, {45, 56, 67}, {78, 89, 90}};
        
        // 调用 calculateSumOfElements 方法计算所有元素的和
        int sum = calculateSumOfElements(matrix);
        
        // 打印结果
        System.out.println("矩阵中所有元素的和为: " + sum);
   }
   public static int calculateSumOfElements(int[][] matrix) {
      
      // 使用 Arrays.stream 和 flatMap 将二维矩阵转换为一维元素流
      return Arrays.stream(matrix)
         .flatMapToInt(IntStream::of)
         .sum();
   }
}

输出

矩阵中所有元素的总和为:494

在本文中,我们探索了使用 Java 编程语言查找矩阵总和的不同方法。


相关文章