java - Java 中 && 和被零除错误的不一致

标签 java logic

我刚开始使用 Java,但遇到了一些不一致的情况。为什么这样做:

if ((d != 0) && (n / d < 3)) {
    compute(a, d);
}

但是如果我这样做:

if ((n / d < 3) && (d != 0)) {
    compute(a, d);
}

我收到这个错误:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at compute.main(compute.java:63)

最佳答案

Java 使用 Short-Circuit Logic 计算表达式.这意味着对于 && , 如果左边的表达式是 false ,那么 Java 就不会计算正确的表达式(因为整个表达式已经保证为假)。

在您的第一个示例中,如果 d == 0 , 然后 d != 0是假的,所以它不会评估 n / d .在你的第二个例子中,如果 d == 0 ,然后评估 n / d < 3会给你除以零的错误。

关于java - Java 中 && 和被零除错误的不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254007/

相关文章:

ruby-on-rails - Rails 密码在 24 小时内过期

sql - SQL Server 中的重叠时间

c - 使用堆将元素插入优先级队列

algorithm - 将任何命题公式转换为 CNF 格式的复杂性

javascript - JS Canvas 中的栅格图层

java - OAuth2-SpringBoot - 刷新 token

java - Spring - 外部依赖中的配置文件

java - 从 pdf 中提取单词坐标的库/工具

java - 类中的静态字段初始化顺序

java - 在 Android 中使用外部类从文件中写入/读取?