zoukankan      html  css  js  c++  java
  • 奇数性(小心陷阱)

    下面是一个确定参数是否为奇数的

     

    public static boolean isOdd(int i)

    {

    return i%2 == 1;

    很多人一开始会认为这段代码是可行的,不过很遗憾,这段代码,它并不可行。。

     

     

    理由很简单,因为在所有的int 数里,有一半的数是负数,而此方法对所有的负奇数的判断都会失败。在任何负整数里面改方法都是返回false.

     

    i为为负奇数,i%2等于-1而不是1.

     

    对于上面的结果,这就得从java对取余(%)操作的定义来分析了。

    该操作符被定义为对于所有的int 数值a和所有的非零int 数值b,都满足下面的恒等式:

    (a/b)*b + (a%b) == a

     

    这句话也以为着:当取余操作返回一个非零的结果时,它与左操作数具有相同的正负符号。

     

     

    这个问题很容易改正。只需要将i%20比较而不是与1比较久好了。

     

    Public static boolean isOdd(int i)

    {

    Return i%2!=0;

     

     

     

  • 相关阅读:
    友链大集合
    雅礼学习10.7
    雅礼学习10.6
    雅礼学习10.5
    雅礼学习10.4
    雅礼学习10.3
    雅礼学习10.4
    雅礼学习10.2
    雅礼学习10.1
    如何让SublimeText3更好用
  • 原文地址:https://www.cnblogs.com/LLeiFeng/p/2848269.html
Copyright © 2011-2022 走看看