编写一个接受整数参数的方法,该方法返回数字可以除以2的次数

时间:2019-01-29 14:48:36

标签: java algorithm

我认为标题本身很容易解释。

例如,如果我输入128,则应打印7。

如果我输入一个奇数,它应该显示0。

我的代码是

public static int divideBy2 (int number){ 

      int count=0;

      while (number%2==0){


         count++;
      }
      return count;
}

我确实知道为什么它不起作用,但我想不出其他任何东西。

我是一个初学者,应该使用while循环。

任何帮助将不胜感激。

(这不是重复项。该帖子是2适合数字多少倍,但是我的问题是将数字重复除以2。)

2 个答案:

答案 0 :(得分:6)

如果是可分的,您需要再将其除以二,您认为吗?

while (number%2==0) {
     number /=2;    
     count++;
}

答案 1 :(得分:1)

如前所述,在测试数字是否可以被二整除之后,您实际上必须进行除法。

警告!如果给定数字0,那么您将陷入无限循环!您应该防止这种情况。

有趣的事实:使用Integer.numberOfTrailingZeros(number),可以不需解决就解决问题。