我刚开始使用 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/