Java Puzzlers 中文版(Java解惑)
Java 谜题 1——表达式谜题
谜题 1:奇数性
下面的方法意图确定它那唯一的参数是否是一个奇数。这个方法能够正确运转 吗?
public static boolean isOdd(int i){
return i % 2 == 1;
}
奇数可以被定义为被 2 整除余数为 1 的整数。表达式 i % 2 计算的是 i 整除 2 时所产生的余数,因此看起来这个程序应该能够正确运转。遗憾的是,它不能; 它在四分之一的时间里返回的都是错误的答案。
为什么是四分之一?因为在所有的 int 数值中,有一半都是负数,而 isOdd 方 法对于对所有负奇数的判断都会失败。在任何负整数上调用该方法都回返回 false ,不管该整数是偶数还是奇数。
评论0
最新资源