朋友考了我个问题,我是初学Java,有点疑问。
问题是这样的代码能真正判断一个整数的奇偶吗?我实在是看不出来有什么不能,大家是什么意见?int a = 随便什么数;
if(a%2==1){
System.out.println("是奇数");
}else{
System.out.println("不是奇数");
}

解决方案 »

  1.   

    //来写个程序测试一下吧,如果像下列代码中我把变量“a”赋值为“-5”,它会输出“不是奇数”。
    public class Test{
    public static void main(String[] args){
    int a = -5;
    if(a % 2 == 1) //<--- -5%2的结果是-1
    System.out.println("是奇数");
    else
    System.out.println("不是奇数");
    }
    }    原因:因为求余符号“%”的特点是,如果要求余的变量是正整数,那么余数将是正整数;如果要求余的变量是负整数,那么余数将是负整数。
      

  2.   

    a为负数的时候不对
    int a = 随便什么数; 
    if(a%2==0){ 
    System.out.println("不是奇数"); 
    }else{ 
    System.out.println("是奇数"); 
    }
      

  3.   

    当 a 是一个负奇数时,a % 2 等于-1而不是1
    正确的做法 ,只需将 a % 2 与0而不是与1比较
     a % 2 != 0;
    也可以这样写
    (a & 1) != 0;
      

  4.   

    一般不判断 负数的奇偶性
    可以加异常处理代码class DivisorCanNotException extends Exception
    {
       DivisorCanNotException ()
      {
          super();
      }
    }
    if(a<0)throw DivisorCanNotException
      

  5.   

    a&1==1为真 a是奇数