刚看到的文章。java陷阱那篇Java codepublic static boolean isOdd(int i){
return i % 2 == 0;
}上面的方法真的能找到所有的奇数么?
---------------------------------------------------
不能吗?
return i % 2 == 0;
}上面的方法真的能找到所有的奇数么?
---------------------------------------------------
不能吗?
解决方案 »
- java写的网页游戏如何做外挂?谁知道哦?
- java不能编译成exe文件吗?
- 如何改变文本文件的编码
- 急!!!.关于线程的同步问题.
- JDBC连接数各种据库的方法
- 菜鸟问一个关于c++和java混合编程的问题
- JSP 连 SQL Server 的问题!
- 各位,,,,还是没有解决啊
- 谁知道Copyright (c) xxxx的格式该怎么写?是写成Copyright (c) 2002还是写成Copyright (c) 1999-2002或者写成Copyright (c) 2002-2010
- CallStaticObjectMethod 返回空指针的问题
- java有根据点画直线的函数吗?
- 如何安装Java HotSpot Server VM(-server)
Integer.MAX_VALUE
return i % 2 == 1;
}
public static boolean isOdd(int i){
return i % 2 == 1;
}
是错误的,因为负数%2=0或-1,所以要根据和0比来判断奇偶
return !(i % 2 == 0);
}这个才是找奇数的,只要是奇数都会输出true
return i%2==0
是我手误吧。敲错了。不是复制的。
不过这跟我的疑问没什么关系,反正确实是用来判断奇偶而已。
谢谢各位了
return (i & 1) != 0;
Java codepublic static boolean isOdd(int i){
return i % 2 == 1;
}
答案里才是return i%==1
我就是想知道,为什么i%2==0不可以?
我试了。-10到10。
奇数返回了false。偶数返回了true。
没有问题啊。为什么说这种不能呢?
正确的原文是: public static boolean isOdd(int i){
return i % 2 == 1;
} 奇数可以被定义为被2整除余数为1的整数。表达式 i % 2 计算的是 i 整除 2 时所产生的余数,因此看起来这个程序应该能够正确运转。遗憾的是,它不能;它在四分之一的时间里返回的都是错误的答案。
为什么是四分之一?因为在所有的 int 数值中,有一半都是负数,而 isOdd 方法对于对所有负奇数的判断都会失败。在任何负整数上调用该方法都回返回 false ,不管该整数是偶数还是奇数。正确的应该是: public static boolean isOdd(int i){
return i % 2 != 0;
}