Java 查找矩阵中每行奇数和偶数元素的数量

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
  • 第一行有2个奇数元素和2个偶数元素

  • 第二行有2个奇数元素和2个偶数元素

  • 第三行有3个奇数元素和1个偶数元素

  • 第四行有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 Streams)

  • 步骤1 - 使用Java Streams 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 Stream

  • 使用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 Stream

在这个方法中,矩阵元素将在程序中初始化。然后根据算法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 Class

在这种方法中,程序将初始化矩阵元素。然后根据算法3使用数组类计算该矩阵每行中奇数元素和偶数元素的数量。

示例

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编程语言,探讨了在矩阵的每一行中找到奇数和偶数元素数量的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程