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 编程语言查找矩阵每一行中奇数和偶数元素个数的不同方法。