为什么这个循环需要减量?

时间:2018-06-18 15:08:59

标签: java

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 = ii已经限制为小于10,代码是否会在第9次自动中断?

我很感激简单/初学者的解释。

3 个答案:

答案 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;
}