如何在 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 - 声明一个 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 编程语言查找矩阵总和的不同方法。