刚看到的文章。java陷阱那篇Java codepublic static boolean isOdd(int i){ 
         return i % 2 == 0; 
    }上面的方法真的能找到所有的奇数么?
---------------------------------------------------
不能吗?

解决方案 »

  1.   

    不能,int 是有大小限制的
    Integer.MAX_VALUE
      

  2.   

    不能把,int 类型的,有个范围的限制吧。
      

  3.   

    Java codepublic static boolean isOdd(int i){ 
             return i % 2 == 1; 
        }
      

  4.   

    那篇文章的意思是
    public static boolean isOdd(int i){ 
      return i % 2 == 1; 
    }
    是错误的,因为负数%2=0或-1,所以要根据和0比来判断奇偶
      

  5.   

    static boolean isOdd(int i){ 
            return !(i % 2 == 0); 
       }这个才是找奇数的,只要是奇数都会输出true
      

  6.   

    呵呵,谢谢各位了。
    return i%2==0
    是我手误吧。敲错了。不是复制的。
    不过这跟我的疑问没什么关系,反正确实是用来判断奇偶而已。
    谢谢各位了
      

  7.   

    return (i & 1) == 1;
    return (i & 1) != 0;
      

  8.   

    貌似是我发的帖子里面的第一题,应该这么写
    Java codepublic static boolean isOdd(int i){ 
             return i % 2 == 1; 
        }
      

  9.   

    刚才我又去看了。你的题目里是写的return i%2==0;
    答案里才是return i%==1
    我就是想知道,为什么i%2==0不可以?
    我试了。-10到10。
    奇数返回了false。偶数返回了true。
    没有问题啊。为什么说这种不能呢?
      

  10.   

    没记错的话是java解惑中的一个题目
    正确的原文是:   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;  
       }