如何在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+瀏覽量

開啟您的職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.