判断奇数,java陷阱

/**

  • 判断是否为奇数

  • @author husky
    /
    public class IsOdd {
    public static void main(String[] args) {
    int demo1 = 3;
    int demo2 = -3;
    System.out.println("isOddBefore demo1: " + isOddBefore(demo1)); //true
    System.out.println("isOddBefore demo2: " + isOddBefore(demo2)); //false
    System.out.println("isOddAfter demo1: " + isOddAfter(demo1)); //true
    System.out.println("isOddAfter demo2: " + isOddAfter(demo2)); //true
    /

    * 结果:
    * isOddBefore demo1: true
    * isOddBefore demo2: false
    * isOddAfter demo1: true
    * isOddAfter demo2: true
    */
    }

    /**

    • 解析:
    • 该方法在传入的参数为负奇数时,判断出错;
    • java对" % "的定义 (a/b) * b + (a % b) == a;
    • 意思是b整除a,将商乘以b,然后加上余数能够得到最初的值;与java的截尾整数整除操作符'/'相结合
    • 可以意味着:当取余操作返回一个非0的结果时,它与左操作符具有相同的正负号。
    • 因此当传入一个负奇数的时候返回的是-1,则结果得到的是false
    • @param demo
      */
      public static boolean isOddBefore(int demo) {
      return demo % 2 == 1;
      }

    /**

    • 解决:
    • 这一题解决只要与0比较就可以了
    • 但遇到判读是否能被其他的数整除的时候就需要注意了;
    • @param demo
      */
      public static boolean isOddAfter(int demo) {
      return demo % 2 != 0;
      }
      }
posted @ 2016-08-21 14:46  时光舟  阅读(438)  评论(0编辑  收藏  举报