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