简介
在这个实验中,你将学习如何在 Java 中检查数组是否仅包含正数。我们将探索不同的实现方法,首先是使用循环遍历数组并逐个检查每个元素的基本方法。
在介绍完基本的循环方法后,我们将深入探讨如何使用 Java Stream API,这是一种更现代且通常更简洁的集合处理方式。最后,我们将讨论在判断数组是否仅包含正值的情况下,如何处理零和负数。这个实验将让你掌握 Java 中数组操作和条件逻辑的实用技能。
在这个实验中,你将学习如何在 Java 中检查数组是否仅包含正数。我们将探索不同的实现方法,首先是使用循环遍历数组并逐个检查每个元素的基本方法。
在介绍完基本的循环方法后,我们将深入探讨如何使用 Java Stream API,这是一种更现代且通常更简洁的集合处理方式。最后,我们将讨论在判断数组是否仅包含正值的情况下,如何处理零和负数。这个实验将让你掌握 Java 中数组操作和条件逻辑的实用技能。
在这一步中,你将学习如何在 Java 中遍历一个数字数组,并检查每个数字是否为正数。这是编程中的一项基本操作,能让你处理数据集合。
首先,在你的 ~/project
目录下创建一个名为 PositiveCheck.java
的新 Java 文件。你可以通过在左侧的文件资源管理器中右键单击,选择“新建文件”,然后输入 PositiveCheck.java
来完成此操作。
现在,在编辑器中打开 PositiveCheck.java
文件,并添加以下代码:
public class PositiveCheck {
public static void main(String[] args) {
// Define an array of integers
int[] numbers = {10, -5, 20, 0, 15, -8};
// Loop through the array
for (int i = 0; i < numbers.length; i++) {
// Get the current number
int currentNumber = numbers[i];
// Check if the number is positive
if (currentNumber > 0) {
System.out.println(currentNumber + " is a positive number.");
}
}
}
}
下面来详细分析这段代码:
public class PositiveCheck
:这行代码声明了我们的类,类名与文件名一致。public static void main(String[] args)
:这是程序执行的主方法。int[] numbers = {10, -5, 20, 0, 15, -8};
:这行代码声明了一个名为 numbers
的整数数组,并使用一些值对其进行初始化。数组是相同数据类型元素的集合。for (int i = 0; i < numbers.length; i++)
:这是一个 for
循环,它是一种控制结构,允许我们多次重复执行一段代码。
int i = 0
:这行代码将计数器变量 i
初始化为 0。i < numbers.length
:这是每次迭代前都会检查的条件。只要 i
小于 numbers
数组的长度,循环就会继续执行。numbers.length
表示数组中的元素数量。i++
:这行代码在每次迭代后将计数器 i
的值加 1。int currentNumber = numbers[i];
:在循环内部,这行代码从 numbers
数组中获取当前索引 i
处的元素,并将其存储在名为 currentNumber
的变量中。数组的索引从 0 开始。if (currentNumber > 0)
:这是一个 if
语句,用于检查 currentNumber
是否大于 0。System.out.println(currentNumber + " is a positive number.");
:只有当 if
条件为真(即数字为正数)时,才会执行这行代码。它会打印出正数,并在后面加上文本 " is a positive number."。保存 PositiveCheck.java
文件(使用 Ctrl+S 或 Cmd+S)。
现在,让我们在终端中编译并运行这个程序。确保你处于 ~/project
目录下。
编译代码:
javac PositiveCheck.java
如果没有错误,将会创建一个 PositiveCheck.class
文件。
现在,运行编译后的代码:
java PositiveCheck
你应该会看到输出中只显示数组中的正数。
10 is a positive number.
20 is a positive number.
15 is a positive number.
这展示了如何使用 for
循环遍历数组,并对每个元素应用条件。在下一步中,我们将探索如何使用 Java 的 Stream API 以更现代的方式实现类似的结果。
在这一步中,我们将探索一种更现代且通常更简洁的 Java 集合处理方式:Stream API。Stream API 是 Java 8 引入的,它为对数据集合执行过滤、映射和归约等操作提供了强大的方法。
我们将修改之前的示例,使用 Stream 来找出数组中的正数。
再次在编辑器中打开 PositiveCheck.java
文件,将现有代码替换为以下内容:
import java.util.Arrays;
public class PositiveCheck {
public static void main(String[] args) {
// Define an array of integers
int[] numbers = {10, -5, 20, 0, 15, -8};
// Use Stream API to filter and print positive numbers
Arrays.stream(numbers) // 1. Create a stream from the array
.filter(number -> number > 0) // 2. Filter for positive numbers
.forEach(number -> System.out.println(number + " is a positive number (Stream).")); // 3. Process each positive number
}
}
让我们来看看这段代码的新增部分:
import java.util.Arrays;
:我们需要导入 Arrays
类,以便使用其 stream()
方法。Arrays.stream(numbers)
:这行代码将我们的 int
数组转换为 IntStream
。流本身不是一种数据结构,而是一个可以处理的元素序列。.filter(number -> number > 0)
:这是流上的一个中间操作。filter()
方法接受一个 Predicate
(一个返回布尔值的函数),并只保留使该谓词为真的元素。这里,number -> number > 0
是一个 Lambda 表达式,它是一种简洁的函数编写方式,用于检查流中的每个 number
是否大于 0。.forEach(number -> System.out.println(number + " is a positive number (Stream)."));
:这是一个终端操作。终端操作会消费流并产生结果。forEach()
方法对流中的每个元素执行一个操作。这里,它会打印每个正数并附带一条消息。保存 PositiveCheck.java
文件。
现在,在终端中编译并运行修改后的程序:
javac PositiveCheck.java
java PositiveCheck
你应该会看到与之前相同的输出,但带有更新后的消息:
10 is a positive number (Stream).
20 is a positive number (Stream).
15 is a positive number (Stream).
这展示了如何使用 Stream API 实现与传统 for
循环相同的结果,而且代码通常更具可读性和表现力,尤其在处理更复杂的操作时。
在前面的步骤中,我们专注于识别正数。现在,让我们扩展程序,使其也能识别零和负数。这将让我们对数组中的数字有更全面的了解。
我们将再次修改 PositiveCheck.java
文件,首先使用传统的 for
循环方法来检查零和负数,因为使用 if-else if-else
语句来理解条件逻辑通常更容易。
在编辑器中打开 PositiveCheck.java
文件,将现有代码替换为以下内容:
public class PositiveCheck {
public static void main(String[] args) {
// Define an array of integers
int[] numbers = {10, -5, 20, 0, 15, -8};
// Loop through the array
for (int i = 0; i < numbers.length; i++) {
// Get the current number
int currentNumber = numbers[i];
// Check if the number is positive, negative, or zero
if (currentNumber > 0) {
System.out.println(currentNumber + " is a positive number.");
} else if (currentNumber < 0) {
System.out.println(currentNumber + " is a negative number.");
} else {
System.out.println(currentNumber + " is zero.");
}
}
}
}
以下是新增的部分:
else if (currentNumber < 0)
:这是一个 else if
语句。它检查 currentNumber
是否小于 0,但仅在之前的 if
条件 (currentNumber > 0
) 为假时才进行检查。else
:这是一个 else
语句。如果前面的 if
或 else if
条件都不成立,else
块中的代码将被执行。在这种情况下,如果数字既不大于 0 也不小于 0,那么它一定是 0。保存 PositiveCheck.java
文件。
现在,在终端中编译并运行修改后的程序:
javac PositiveCheck.java
java PositiveCheck
你现在应该会看到将数组中的每个数字进行分类的输出:
10 is a positive number.
-5 is a negative number.
20 is a positive number.
0 is zero.
15 is a positive number.
-8 is a negative number.
这展示了如何在循环中使用 if-else if-else
语句来处理多个条件。这是编程中决策的基本模式。
你也可以使用 Stream API 结合更高级的技术(如 partitioningBy
或多个 filter
操作)来实现类似的结果,但对于这个特定任务,使用 if-else if-else
的 for
循环是一种清晰且直接的方法,尤其适合初学者。
在本次实验中,我们学习了如何在 Java 中检查数组是否只包含正数。我们探索了两种主要方法:使用 for
循环遍历数组,以及利用 Java Stream API。
我们首先创建了一个 Java 类,并使用 for
循环检查整数数组中的每个元素。我们实现了一个条件检查 (if (currentNumber > 0)
) 来识别并打印正数。这种基础方法展示了如何访问和处理数组中的单个元素。虽然提供的内容仅详细介绍了循环方法,但实验的结构表明,后续步骤将涵盖 Stream API 以及处理零和负数的内容,从而让你全面了解完成这一常见编程任务的不同技术。