而java中的循环条件

时间:2015-07-10 16:22:36

标签: java while-loop conditional-statements

我正在努力通过" Java - Herbert Schildt的初学者指南"。我希望这个问题不太荒谬。它是一个while循环条件,其中while循环位于for循环内。代码示例是这样的:

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);    
    }
}

while (e > 0)之后写的范围内,我不理解e的递减。由于e = i,并且i递增,我相信在第一次执行for循环之后e应该大于0。如果e没有减少,程序将无法正常运行。为什么在这个例子中减少e是必要的?

6 个答案:

答案 0 :(得分:2)

如果你没有e--,你将陷入无休止的while loop

这样看:

让我们进入for循环的随机迭代。

我们说i=5

然后e=i e=5

我们现在跳转到while循环。

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

如果我们没有e--e将始终保持为5,while循环永远不会终止。

通过执行e--e将从5开始,然后是4,......然后是0,while循环将终止,我们将跳回{{1 }}}循环,引发for(并因此i)并重复整个过程。

答案 1 :(得分:2)

他们在那里做的是对于i的每次迭代,他们将结果乘以2,i次。

演练将是

i = 0,e = 0,结果不成倍,输出2到0的幂是1

i = 1,e = 1,结果乘以1乘以2,2乘以1的幂是2

他们在那里递减“向后计数”到0.E每次都被重置,并且总是在第一次迭代后进入while循环,并且一旦倒计时将始终退出while循环为零。

答案 2 :(得分:1)

简单的字词说明

  

在while循环中你需要这样一个声明,因为while   条件变为错误,程序控制就会出现   循环,它将有助于避免无休止的lopping问题。

你问过为什么减少e在这个程序中很重要?
回答:如果你没有递减e,那么(e> 0)将始终返回true值,程序将进入无限循环(将始终处于while循环中)。

当p = 2时,

Iteration 2的示例:
结果= 1
e = i = 2
while(e> 0)评估为真
所以结果= 1 * 2 = 2
e--:e = 1

同样,当(e> 0)评估为真时,因为e = 1&gt; 0
结果= 2 * 2 = 4
e--:e = 0

现在再次检查while(e&gt; 0)并且它将评估为false并且while循环结束。

有关少量样本的更多信息,请参阅以下链接: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html

答案 3 :(得分:0)

while循环执行任务,直到给定条件为false。假设e从大于0开始,不递减它将导致它永远循环。

就程序而言,它递减e以计算2 n ,这是通过将n倍加倍来实现的。

答案 4 :(得分:0)

如果e没有减少,一旦for循环超过i=0,while循环将永远执行。这是因为在不改变e的值的情况下,e 总是大于0.因此,必须递减e才能满足退出条件。

答案 5 :(得分:0)

让我们考虑for循环的一个特定实例,并说在那个实例中e = 5(当i = 5时会发生这种情况)。 所以,我们运行while循环直到e大于0,这是5次。 这5次中的每一次,我们将结果(最初为1)乘以2并更新它。 因此,在while循环的5次运行结束时,我们将完成2 ^ 5然后我们将2打印到电源i(5)是如此之多。 现在,为for循环的每个值实现了这个逻辑。