• 奇数性(小心陷阱)


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

     

    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;

     

     

     

  • 相关阅读:
    Hive学习笔记记录
    Hadoop学习笔记记录
    python学习笔记记录
    2018高级软件工程——助教总结
    Week3 第二次结对编程
    Week2 第一次结对编程
    Week1 博客作业
    最后一周总结
    阅读和提问3
    个人项目 案例分析
  • 原文地址:https://www.cnblogs.com/LLeiFeng/p/2848269.html
Copyright © 2020-2023  润新知