class Testing {
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);
}
}
上面的代码测试从0到9的2的整数次幂。我很困惑为什么在while循环中需要e--;
?删除它会导致无限循环错误,但为什么呢?考虑到e = i
和i
已经限制为小于10,代码是否会在第9次自动中断?
我很感激简单/初学者的解释。
答案 0 :(得分:0)
for(int i = 0; i < 10; i++) {
result = 1;
e = i;
while(e > 0) {
result *= 2;
e--;
}
}
e
递减,以便在每个实例中放下e
的值以结束while循环,否则当i
递增时它将是无限循环。
因此,在第二次迭代i = 1, e = i => e = 1
,使内部while循环始终为真,如1&gt;因此,内部e--
对于突破循环非常重要。
要解决这个问题,你可以让while循环for循环并递减e
,如果这样可以让你更清楚。另外,我建议使用比e
更好的变量。良好的编码习惯对于早期灌输很重要。
答案 1 :(得分:0)
看看每一个我都在为e赋值 i = 1然后e = 1 i = 2然后e = 2 ........ 所以,如果你不减小e的值,while循环将运行无限 例如,如果i = 3,那么e = 3,所以如果我们不添加减量,循环将运行infinte 它就像嵌套循环
for(int i=0;i<10;i++)
{
result=1;
for(int e=i;e>0;)
{
result *= 2;``
}
}
所以anser是
for(int i=0;i<10;i++)
{
result=1;
for(int e=i;e>0;e--)
{
result *= 2;``
}
}
答案 2 :(得分:0)
只需查看内部while-loop
:
while(e > 0) {
result *= 2;
e--;
}
破坏条件是e
不大于零时。由于e
以正数开头,因此必须减少它,因为它不会大于零。它相当于:
for(int j = 0; j < i; j++) {
result *= 2;
}