黑马程序员技术交流社区
标题:
取余运算符的问题
[打印本页]
作者:
刘云龙
时间:
2012-10-18 00:01
标题:
取余运算符的问题
public static void main(String[] args)
{
System.out.println(isOdd(-3));
}
static boolean isOdd(int n)
{
return n%2 == 1;
}
复制代码
isOdd()方法用来求一个整数是否为奇数
当是当输入负数时,返回值却为false。
为什么?
作者:
葬天
时间:
2012-10-18 00:12
在取余操作中,余数的正负符号完全取决于左操作数。
所以都为FALSE
作者:
徐梦侠
时间:
2012-10-18 00:14
因为-3%2=-1.
你可以这样稍作修改
static boolean isOdd(int n)
{
//return n%2 == 1||n%2 ==-1;
return Math.abs(n)%2==1;//也可以用绝对值参与运算
}
作者:
丁旭
时间:
2012-10-18 00:16
余数结果是正数还是负数,取决于%左边的n。
当n为正数,n%2结果为正数,否则为负数。
你这道题,-3%2应该为-1,不等于1,所以返回值false
作者:
占琳
时间:
2012-10-18 01:14
取模运算中,结果取决于分子是负数还是正数,如果是-3%2结果是-1,如果是3%2结果是1,所以-1不等于1结果是false
作者:
刘伟平
时间:
2012-10-18 08:07
有时候,只要在适当的位置加个输出语句,就能知道问题的所在了
作者:
高志鹏
时间:
2012-10-18 09:33
-3%2=-1
-1!=1
return false
作者:
刘云龙
时间:
2012-10-18 10:28
谢谢各位,明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2