我正在努力通过" 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是必要的?
答案 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循环中)。
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循环的每个值实现了这个逻辑。