Java 中查詢矩陣每一行的奇數和偶數元素個數


在 Java 中,陣列是一個物件。它是一種非原始資料型別,用於儲存相同資料型別的值。Java 中的矩陣只不過是一個多維陣列,它表示多行和多列。

這裡我們給出一個包含一組元素的矩陣,根據題目要求,我們需要找出矩陣每一行中奇數和偶數元素的個數。

讓我們開始吧!

舉幾個例子

示例 1

給定矩陣 =

21 	22	23
24	25	26
27	28	29
  • 第 1 行有 2 個奇數元素和 1 個偶數元素

  • 第 2 行有 1 個奇數元素和 2 個偶數元素

  • 第 3 行有 2 個奇數元素和 1 個偶數元素

示例 2

給定矩陣 =

121 	222	243	432
124	245	256	657
237	258	229	345
176	453	756	343
  • 第 1 行有 2 個奇數元素和 2 個偶數元素

  • 第 2 行有 2 個奇數元素和 2 個偶數元素

  • 第 3 行有 3 個奇數元素和 1 個偶數元素

  • 第 4 行有 2 個奇數元素和 2 個偶數元素

示例 3

給定矩陣 =

1 	2	3
4	5	6
7	8	9
  • 第 1 行有 2 個奇數元素和 1 個偶數元素

  • 第 2 行有 1 個奇數元素和 2 個偶數元素

  • 第 3 行有 2 個奇數元素和 1 個偶數元素

演算法

演算法 1:(使用 for 迴圈)

  • 步驟 1 − 使用巢狀 for 迴圈遍歷矩陣的每一行和每一行中的每個元素。

  • 步驟 2 − 使用兩個變數 oddCount 和 evenCount 來跟蹤每一行中奇數和偶數元素的個數。

  • 步驟 3 − 對於每一行中的每個元素,使用模運算子 (%) 檢查它是奇數還是偶數。

  • 步驟 4 − 如果元素是偶數,則遞增 evenCount;否則,遞增 oddCount。

  • 步驟 5 − 遍歷完一行中的所有元素後,列印該行的奇數和偶數元素的個數。

演算法 2:(使用 Java 流)

  • 步驟 1 − 使用 Java 流 API 中的 IntStream 類來處理矩陣每一行中的元素。

  • 步驟 2 − 使用兩個變數 oddCount 和 evenCount 來跟蹤每一行中奇數和偶數元素的個數。

  • 步驟 3 − 對於每一行,它從該行中的元素建立一個 IntStream,然後使用 filter 方法獲取奇數和偶數元素的個數。

  • 步驟 4 − filter 方法接收一個 Predicate 作為引數,該引數對於奇數元素返回 true,對於偶數元素返回 false。

  • 步驟 5 − 遍歷完所有行後,列印每一行的奇數和偶數元素的個數。

演算法 3:(使用 Arrays 類)

  • 步驟 1 − 使用 Java 標準庫中的 Arrays 類來處理矩陣每一行中的元素。

  • 步驟 2 − 使用兩個變數 oddCount 和 evenCount 來跟蹤每一行中奇數和偶數元素的個數。

  • 步驟 3 − 對於每一行,它使用 Arrays 類中的 stream 方法從該行中的元素建立一個流,然後使用 filter 方法獲取奇數和偶數元素的個數。

  • 步驟 4 − filter 方法接收一個 Predicate 作為引數,該引數對於奇數元素返回 true,對於偶數元素返回 false。

  • 步驟 5 − 遍歷完所有行後,列印每一行的奇數和偶數元素的個數。

語法

1. Java 中的 Matrix.length() 方法返回給定矩陣的長度。

下面是它的語法:

inputMatrix.lenght

其中,“inputMatrix”指的是給定的矩陣。

2. IntStream.of() 方法是 Java Stream API 的一部分,用於從 int 值陣列建立原始 int 值的流。

IntStream.of(inputMatrix[i])

其中,“inputMatrix”指的是給定的矩陣。

3. filter() 方法用於根據條件過濾流中的元素。滿足條件的元素保留在結果流中,其餘元素被丟棄。在本例中,filter 方法用於從 IntStream.of() 方法建立的 int 值流中過濾奇數和偶數元素。

filter(x -> x % 2 != 0)

多種方法

我們提供了多種解決方法。

  • 使用 for 迴圈

  • 使用 Java 流

  • 使用 Arrays 類

讓我們逐一檢視程式及其輸出。

方法 1:使用 for 迴圈

在這種方法中,矩陣元素將在程式中初始化。然後根據演算法 1 使用 for 迴圈計算該矩陣每一行中奇數和偶數元素的個數。

示例

public class Main {
   public static void main(String[] args) {
      
      //declare and initialize a 2D matrix
      int[][] inputMatrix = {{11, 21, 23, 44}, {52, 36, 47, 58}, {49, 10, 11, 12}};
      
      //loop to find odd/even counts
      for (int a = 0; a < inputMatrix.length; a++) {
         int oddCnt = 0, evenCnt = 0;
         for (int b = 0; b < inputMatrix[a].length; b++) {
            if (inputMatrix[a][b] % 2 == 0) {
               evenCnt++;
            } else {
               oddCnt++;
            }
         }
         
         //print the result
         System.out.println("Row " + (a + 1) + " has " + oddCnt + " odd elements and " + evenCnt + " even elements");
      }
   }
}

輸出

Row 1 has 3 odd elements and 1 even elements
Row 2 has 1 odd elements and 3 even elements
Row 3 has 2 odd elements and 2 even elements

方法 2:使用 Java 流

在這種方法中,矩陣元素將在程式中初始化。然後根據演算法 2 使用 Java 流計算該矩陣每一行中奇數和偶數元素的個數。

示例

import java.util.stream.IntStream;
public class Main {
   public static void main(String[] args) {
      
      //declare and initialize a 2D matrix
      int[][] inputMatrix = {{1, 2, 3}, {5, 6, 7}, {10, 11, 12}};
      for (int i = 0; i < inputMatrix.length; i++) {
         
         // create a stream from the elements in the row and filter odd and even elements
         long oddCount = IntStream.of(inputMatrix[i]).filter(x -> x % 2 != 0).count();
         long evenCount = IntStream.of(inputMatrix[i]).filter(x -> x % 2 == 0).count();
         
         //print the results
         System.out.println("Row " + (i + 1) + " has " + oddCount + " odd elements and " + evenCount + " even elements");
      }
   }
}

輸出

Row 1 has 2 odd elements and 1 even elements
Row 2 has 2 odd elements and 1 even elements
Row 3 has 1 odd elements and 2 even elements

方法 3:使用 Arrays 類

在這種方法中,矩陣元素將在程式中初始化。然後根據演算法 3 使用 Arrays 類計算該矩陣每一行中奇數和偶數元素的個數。

示例

import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      
      //declare and initialize a 2D matrix
      int[][] inputMatrix = {{21, 24, 23, 42}, {25, 16, 77, 68}, {96, 10, 11, 12}, {99, 10, 11, 12}};
      for (int a = 0; a < inputMatrix.length; a++) {
         
         // create arrays stream from the elements in the row and filter odd and even elements
         int oddCount = (int) Arrays.stream(inputMatrix[a]).filter(x -> x % 2 != 0).count();
         int evenCount = (int) Arrays.stream(inputMatrix[a]).filter(x -> x % 2 == 0).count();
         System.out.println("Row " + (a + 1) + " has " + oddCount + " odd elements and " + evenCount + " even elements");
      }
   }
}

輸出

Row 1 has 2 odd elements and 2 even elements
Row 2 has 2 odd elements and 2 even elements
Row 3 has 1 odd elements and 3 even elements
Row 4 has 2 odd elements and 2 even elements

在這篇文章中,我們探討了使用 Java 程式語言查詢矩陣每一行中奇數和偶數元素個數的不同方法。

更新於:2023 年 5 月 4 日

547 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.