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 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告