为什么定义的方法会报错呢?

请找到一个大于2022的最小数,这个数转换成二进制后,最低的6个二进制位全为0。找出这个十进制的最小数。
为什么这个方法我打出来会报错呢?第13行为什么要让x/= 2

img

  1. 你的check方法声明的返回值是boolean ,但是你这个代码while 里有可能会直接break跳出循环,这个时候是没有返回值的;
  2. x/=2 相当于 x= x/2;

感觉你的check应该改成这样

static boolean check(int x) {
        int num = 0;

        while (x != 0) {
            if (x % 2 == 0) {
                num++;
            } else {
                break;
            }
            if (num >6) {
                break;
            }
            x /= 2;
        }
        return num >= 6;
    }