Integer powers program需要Java帮助

时间:2015-05-15 08:07:57

标签: java integer

所以我在我的书中得到了这个程序并进行了测试,它运行良好。我需要帮助,但要了解它是如何起作用的。我知道两种方法的力量,例如2x2x2x2x2x2x2x2x2 = 512.嗯,这是程序:

// Compute integer powers of 2.
class Power {
    public static void main(String args[]) {
        int e;
        int result;
        for(int i=0; i < 10; i++) {
            result = 1;
            e = i;
            while(e > 0) {
                result *= 2;
                e--;
            }
            System.out.println("2 to the " + i + " power is " + result);
         }
     }
}

所以我已经知道结果* = 2表示:结果=结果* 2.我不明白这是如何工作的。例如,我现在是4.结果= 1,e = i,所以e现在是4. 4高于0,所以while循环运行。然后它说结果是结果* 2,但那是1 = 1 * 2 = 2.但结果应该是16.结果如何变为16?因为它一直是1。我不明白。另外,为什么e--部分?我已经用e ++尝试了这个程序,但是然后它将结果打印为1,之后只打印了0.还尝试了没有e--或e ++,但随后它在dos-prompt中冻结。请注意我是初学者,这是我的第一个while循环。任何帮助,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

while(e > 0) {
    result * = 2;
    e--;
}

此循环执行,直到e变为零。 所以在第一个循环中

result = 1 * 2;

在第二个循环中

result = result * 2;表示result = 2 * 2

同样。

答案 1 :(得分:0)

您正在使用嵌套循环。也就是说,while循环内的for循环。这意味着对于for循环的每次迭代,while循环将执行,直到它的条件变为false。

现在回答您的问题,对于for的第一次迭代,i = 0.这意味着e = 0,这意味着while循环不会执行。所以,这里的结果是1,这是合乎逻辑的,因为任何n ^ 0 = 1。

对于for的第二次迭代,i = 1.这意味着e = 1.这里,while循环将运行1次迭代。它将使结果= 2(结果* = 2)。因此,结果是2因为2 ^ 1 = 2。

以下是干燥表。

for  i    while    e    result
loop      loop
1    0    1        0    1  
2    1    1        1    2
3    2    1        2    2
     1    2        1    4
4    3    1        3    2
     2    2        2    4
     1    3        1    8

等等。这张桌子看起来很难看,但它会给你一个提示。

  

结果如何变为16?因为它一直是1。

结果初始化为1,但每次while循环执行时它的值都会相乘。

  

我用e ++尝试过这个程序,然后将结果打印为1和   在此之后只有0。

如果您放置e++而不是e--,则此循环将一直运行直到e溢出。但是当e的值达到33时,由于乘法,结果将变为0。之后,它将保持为0。

  

在没有e - 或e ++的情况下也试过它,但随后它就冻结了   DOS提示符。

这意味着你的while循环条件永远不会变为false,因此,它将是一个无限循环。