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