21.用偶判断,不用奇判断

我们在学java的基本运算符时,经常会用到 " % " 运算符。还记得我们是如何判断一个数是否为偶数的吗?

我们之前的代码是这样的value%2==0?"偶数":"奇数"; 那么现在我们突发奇想将代码改为value%2==1?"奇数":"偶数";是否可以成功呢?
动手写个demo试试:

   public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入多个数字判断奇偶:");
        while(input.hasNextInt()) {
            int value = input.nextInt();
            String result = value % 2 == 1 ? "奇数" : "偶数";

            System.out.println("输入为:" + value + " -->  " + result);
        }
    }

运行结果:
请输入多个数字判断奇偶:0 1 -1 2
输入为:0 --> 偶数
输入为:1 --> 奇数
输入为:-1 --> 偶数
输入为:2 --> 偶数

What? -1 是偶数?
回过头来看看我们之前的那种写法:

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入多个数字判断奇偶:");
        while(input.hasNextInt()) {
            int value = input.nextInt();
            String result = value % 2 == 0 ? "偶数" : "奇数";

            System.out.println("输入为:" + value + " -->  " + result);
        }
    }

运行结果:
  请输入多个数字判断奇偶:0 1 -1 2
  输入为:0 --> 偶数
  输入为:1 --> 奇数
  输入为:-1 --> 奇数
  输入为:2 --> 偶数


查阅资料才知道,原来java中的求余操作是这么算出来的:

    //模拟求模运算, dividend表示被除数,divisor表示除数
   public static int remainder(int dividend,int divisor){
           return divide-divide/divisor*divisor
   }

我们把 -1 和 2 分别作为dividenddivisor传入这个方法发现求模返回为-1,当然不等于1啦!

知道原因了,解决方法就是以后我们判断奇偶时还是老老实实用 判断是否等于0才为偶数,否则为奇数吧。

你可能感兴趣的:(21.用偶判断,不用奇判断)