如何在 Java 中检查数组是否只包含正数

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何在 Java 中检查数组是否仅包含正数。我们将探索不同的实现方法,首先是使用循环遍历数组并逐个检查每个元素的基本方法。

在介绍完基本的循环方法后,我们将深入探讨如何使用 Java Stream API,这是一种更现代且通常更简洁的集合处理方式。最后,我们将讨论在判断数组是否仅包含正值的情况下,如何处理零和负数。这个实验将让你掌握 Java 中数组操作和条件逻辑的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/DataStructuresGroup(["Data Structures"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/DataStructuresGroup -.-> java/arrays("Arrays") java/ProgrammingTechniquesGroup -.-> java/lambda("Lambda") java/FileandIOManagementGroup -.-> java/stream("Stream") subgraph Lab Skills java/if_else -.-> lab-559999{{"如何在 Java 中检查数组是否只包含正数"}} java/for_loop -.-> lab-559999{{"如何在 Java 中检查数组是否只包含正数"}} java/arrays -.-> lab-559999{{"如何在 Java 中检查数组是否只包含正数"}} java/lambda -.-> lab-559999{{"如何在 Java 中检查数组是否只包含正数"}} java/stream -.-> lab-559999{{"如何在 Java 中检查数组是否只包含正数"}} end

遍历数组检查正数

在这一步中,你将学习如何在 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 以更现代的方式实现类似的结果。

使用 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 语句。如果前面的 ifelse 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-elsefor 循环是一种清晰且直接的方法,尤其适合初学者。

总结

在本次实验中,我们学习了如何在 Java 中检查数组是否只包含正数。我们探索了两种主要方法:使用 for 循环遍历数组,以及利用 Java Stream API。

我们首先创建了一个 Java 类,并使用 for 循环检查整数数组中的每个元素。我们实现了一个条件检查 (if (currentNumber > 0)) 来识别并打印正数。这种基础方法展示了如何访问和处理数组中的单个元素。虽然提供的内容仅详细介绍了循环方法,但实验的结构表明,后续步骤将涵盖 Stream API 以及处理零和负数的内容,从而让你全面了解完成这一常见编程任务的不同技术。