如何检查 Java 中的布尔表达式是否有效

JavaJavaBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查 Java 中的布尔表达式是否有效。我们将从使用比较运算符计算简单的布尔表达式开始。

接下来,你将探索如何通过使用逻辑运算符组合简单表达式来处理复合布尔表达式。最后,你将学习如何识别和捕获在 Java 代码中处理无效布尔表达式时可能出现的错误。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/data_types("Data Types") java/BasicSyntaxGroup -.-> java/operators("Operators") java/BasicSyntaxGroup -.-> java/booleans("Booleans") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("Exceptions") subgraph Lab Skills java/data_types -.-> lab-559930{{"如何检查 Java 中的布尔表达式是否有效"}} java/operators -.-> lab-559930{{"如何检查 Java 中的布尔表达式是否有效"}} java/booleans -.-> lab-559930{{"如何检查 Java 中的布尔表达式是否有效"}} java/if_else -.-> lab-559930{{"如何检查 Java 中的布尔表达式是否有效"}} java/exceptions -.-> lab-559930{{"如何检查 Java 中的布尔表达式是否有效"}} end

计算简单的布尔表达式

在这一步中,我们将学习 Java 中的布尔表达式以及如何计算简单的布尔表达式。布尔表达式在编程中是基础内容,因为它们使我们能够根据条件的真假来做出决策。

布尔表达式是一种计算结果为 truefalse 的语句。在 Java 中,我们使用比较运算符来创建这些表达式。以下是一些常见的比较运算符:

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于或等于
  • <=:小于或等于

让我们创建一个简单的 Java 程序来计算一些布尔表达式。

  1. 如果 HelloJava.java 文件尚未在 WebIDE 编辑器中打开,请打开它。

  2. 将文件的全部内容替换为以下代码:

    public class HelloJava {
        public static void main(String[] args) {
            int x = 10;
            int y = 20;
    
            boolean isEqual = (x == y);
            boolean isNotEqual = (x != y);
            boolean isGreater = (x > y);
            boolean isLess = (x < y);
            boolean isGreaterOrEqual = (x >= y);
            boolean isLessOrEqual = (x <= y);
    
            System.out.println("Is x equal to y? " + isEqual);
            System.out.println("Is x not equal to y? " + isNotEqual);
            System.out.println("Is x greater than y? " + isGreater);
            System.out.println("Is x less than y? " + isLess);
            System.out.println("Is x greater than or equal to y? " + isGreaterOrEqual);
            System.out.println("Is x less than or equal to y? " + isLessOrEqual);
        }
    }

    在这段代码中:

    • 我们声明了两个整数变量 xy
    • 我们创建了几个布尔变量(isEqualisNotEqual 等),并将布尔表达式的结果赋值给每个变量。
    • 我们使用 System.out.println 来打印这些布尔表达式的结果。
  3. 保存文件(Ctrl+S 或 Cmd+S)。

  4. 在终端中运行以下命令来编译程序:

    javac HelloJava.java

    如果没有错误,将创建一个 HelloJava.class 文件。

  5. 运行编译后的程序:

    java HelloJava

    你应该会看到输出显示每个布尔表达式的结果。

    Is x equal to y? false
    Is x not equal to y? true
    Is x greater than y? false
    Is x less than y? true
    Is x greater than or equal to y? false
    Is x less than or equal to y? true

你已经成功地在 Java 中计算了简单的布尔表达式!理解如何比较值并得到 truefalse 的结果对于控制程序的流程至关重要。

处理复合表达式

在这一步中,我们将学习如何使用逻辑运算符组合简单的布尔表达式,以创建更复杂的表达式。这些被称为复合表达式,它们使我们能够同时检查多个条件。

Java 提供了以下逻辑运算符:

  • &&:逻辑与。只有当 两个 条件都为 true 时,表达式才为 true
  • ||:逻辑或。如果 至少有一个 条件为 true,表达式就为 true
  • !:逻辑非。此运算符会反转表达式的布尔值。如果一个表达式为 true! 会使其变为 false,反之亦然。

让我们修改 HelloJava.java 程序以使用这些逻辑运算符。

  1. 在 WebIDE 编辑器中打开 HelloJava.java 文件。

  2. 将当前代码替换为以下代码:

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            int score = 85;
            boolean isStudent = true;
    
            // Using Logical AND (&&)
            boolean isEligibleForDiscount = (age > 18 && isStudent);
            System.out.println("Is eligible for student discount? " + isEligibleForDiscount);
    
            // Using Logical OR (||)
            boolean passedExam = (score >= 70 || age < 18);
            System.out.println("Passed the exam? " + passedExam);
    
            // Using Logical NOT (!)
            boolean isNotStudent = !isStudent;
            System.out.println("Is not a student? " + isNotStudent);
    
            // Combining multiple operators
            boolean complexCondition = (age > 20 && score > 80 || !isStudent);
            System.out.println("Complex condition result: " + complexCondition);
        }
    }

    在这个更新后的代码中:

    • 我们引入了新的变量 agescoreisStudent
    • 我们使用 && 来检查某人是否有资格享受学生折扣(年龄大于 18 且是学生)。
    • 我们使用 || 来检查某人是否通过了考试(分数达到 70 或更高,或者年龄小于 18)。
    • 我们使用 ! 来取反 isStudent 布尔值。
    • 我们展示了在单个表达式中组合 &&||! 的示例。
  3. 保存文件(Ctrl+S 或 Cmd+S)。

  4. 在终端中编译程序:

    javac HelloJava.java

    确保没有编译错误。

  5. 运行编译后的程序:

    java HelloJava

    观察输出,它将显示复合布尔表达式的结果。

    Is eligible for student discount? true
    Passed the exam? true
    Is not a student? false
    Complex condition result: true

你现在已经学会了如何使用逻辑与 (&&)、逻辑或 (||) 和逻辑非 (!) 运算符来创建和计算复合布尔表达式。这使你能够在 Java 程序中构建更复杂的条件。

捕获无效表达式错误

在这一步中,我们将探讨当尝试计算 Java 中无效的表达式时会发生什么,以及编译器如何帮助我们捕获这些错误。理解常见错误是学习任何编程语言的重要部分。

Java 是一种强类型语言,这意味着数据类型很重要。布尔表达式特别要求操作数能够被比较或计算为布尔值。在布尔表达式中尝试使用不兼容的类型会导致编译错误。

让我们有意在 HelloJava.java 程序中引入一个错误,看看编译器会有什么反应。

  1. 在 WebIDE 编辑器中打开 HelloJava.java 文件。

  2. 修改代码以包含一个无效的比较。例如,让我们尝试将一个布尔值与一个整数进行比较:

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            // boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
        }
    }

    目前我们已经将导致错误的那一行代码注释掉了,但我们将在下一步取消注释。注释掉的代码行 boolean invalidComparison = (isStudent == age); 试图使用相等运算符 (==) 将一个 boolean 变量 (isStudent) 与一个 int 变量 (age) 进行比较。Java 不允许这种直接比较,因为 booleanint 是不同的数据类型,不能以这种方式进行有意义的比较。

  3. 保存文件(Ctrl+S 或 Cmd+S)。

  4. 现在,让我们取消注释会导致错误的那一行代码。将代码修改为:

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
            System.out.println("Invalid comparison result: " + invalidComparison);
        }
    }
  5. 再次保存文件。

  6. 尝试在终端中编译程序:

    javac HelloJava.java

    你应该会看到 Java 编译器给出的错误消息。确切的消息可能会因 Java 版本略有不同,但它会指出类型不匹配或类型不兼容。

    ~/project/HelloJava.java:7: error: incomparable types: boolean and int
            boolean invalidComparison = (isStudent == age);
                                         ^
    1 error

    这个错误消息会告诉你文件名 (HelloJava.java)、行号 (7) 以及错误描述(“incomparable types: boolean and int”)。这就是编译器在你尝试运行程序之前帮助你捕获错误的方式。

  7. 要修复错误并使程序再次可编译,你需要删除或注释掉无效的代码行。将代码改回注释掉该行的版本:

    public class HelloJava {
        public static void main(String[] args) {
            int age = 25;
            boolean isStudent = true;
    
            // This line will cause a compilation error
            // boolean invalidComparison = (isStudent == age);
    
            System.out.println("Age: " + age);
            System.out.println("Is student: " + isStudent);
        }
    }
  8. 保存文件。

  9. 再次编译程序:

    javac HelloJava.java

    这次,编译应该会成功,你不会看到任何错误消息。

理解编译错误以及如何解读它们是任何程序员都必须掌握的重要技能。Java 编译器是一个强大的工具,它能帮助你在开发过程的早期发现许多常见的错误。

总结

在本次实验中,我们学习了 Java 中布尔表达式的基础知识。首先,我们了解了什么是布尔表达式,以及它如何计算为 truefalse。接着,我们通过使用常见的比较运算符(如 ==!=><>=<=)来练习计算简单的布尔表达式。通过一个实际示例,我们学会了如何声明整数变量、应用这些比较运算符来创建布尔表达式,并打印出计算得到的布尔值。

在简单表达式的基础上,我们探索了如何使用逻辑运算符(如 &&(逻辑与)、||(逻辑或)和 !(逻辑非))组合简单的布尔表达式,以处理复合布尔表达式。我们学习了这些运算符的工作原理,以及如何使用括号来控制复杂表达式的计算顺序。最后,我们强调了处理因无效布尔表达式而可能出现的错误的重要性,学会了如何识别和解决可能导致表达式无法正确计算的问题。