而循环和增量运算符混淆

时间:2015-03-11 00:15:21

标签: loops while-loop operators increment

在练习时练习练习问题!网站,我遇到了这个问题:

public static void mystery(int x) {
int y = 1;
int z = 0;
while (2 * y <= x) {
    y = y * 2;
    z++;
}
System.out.println(y + " " + z);

}

给出的x整数是:

mystery(1)
mystery(6)
mystery(19)
mystery(39)
mystery(74)

我得到的唯一答案是神秘1,这是1 0。z ++让我感到困惑 对于其他人,我已经尝试了几个答案,但都没有工作。我试图解决这个问题的方法是(使用神秘(6)整数): 从(2 *(1)&lt; =(6)) {y =(1)* 2; y = 2 对于神秘(6)我把2(y值)和5作为z值(因为我认为从x值开始,每个+1的z值会增加。这是错误的,所以我尝试了2 1,因为我想也许z只会增加一个,这也是错误的。

我为这么糟糕的帖子道歉,但我没有太多时间发布这个(不是截止日期,但只是一堆与此无关的东西需要完成)任何帮助都将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

y值会按此数量变化 y = y * 2; 每次循环

所以你得到: y值|时间循环

1 | 0

2 | 1

4 | 2

8 | 3