我开始使用Java,我遇到了一些不一致的问题.为什么这样做:
if ((d != 0) && (n / d < 3)) {
compute(a, d);
}
Run Code Online (Sandbox Code Playgroud)
但如果我这样做:
if ((n / d < 3) && (d != 0)) {
compute(a, d);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at compute.main(compute.java:63)
Run Code Online (Sandbox Code Playgroud)
jh3*_*314 23
Java使用短路逻辑评估表达式.这意味着&&,如果左表达式是false,则Java不会考虑正确的表达式(因为整个表达式已经保证为假).
在您的第一个示例中,if d == 0,d != 0则为false,因此不会进行评估n / d.在你的第二个例子中,如果d == 0,那么评估n / d < 3会给你除以零的误差.
| 归档时间: |
|
| 查看次数: |
322 次 |
| 最近记录: |