java 中的 while 循环条件

While loop condition in java

我正在努力完成 "Java - A beginners guide by 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);    
    }
}

不明白e的递减,在while (e > 0)后面写的范围内。由于 e = i,并且 i 递增,我相信在第一次执行 for 循环后 e 应该大于 0。如果 e 不递减,程序将不会 运行 正确。为什么在此示例中需要递减 e?

如果你不这样做 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 循环将终止,我们将跳回到 for 循环,提高 i(因此 e)并重复整个过程。

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

演练将是

i = 0,e = 0,结果不相乘,输出2的0次方为1

i = 1,e = 1,结果乘以2,2的1次方为2

等等

他们在那里将 e 递减到 "count i backwards" 到 0。E 每次都被重置,并且总是会在第一次迭代后进入 while 循环,并且总是会在它结束时退出 while 循环倒数到零。

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

在程序上,它递减e是为了计算2n,这是通过乘以2n次来完成的。

如果e不递减,一旦for循环前进到i=0以上,while循环就会一直执行下去。这是因为如果不改变 e 的值,e 将总是 大于 0。因此,必须递减 e 才能满足退出条件。

简单的单词解释

In while loop you need such a statement because of which the while condition becomes false and program control comes out of the while loop and it will help to avoid endless lopping problem.

你问过为什么递减 e 在这个程序中很重要?
答案 :如果你不递减 e 那么 while(e > 0) 将永远是 return 真值并且程序将进入无限循环(将永远处于 while 循环中).

当 i = 2 时的样本迭代 2:
结果 = 1
e = i = 2
while(e > 0) 计算结果为真
所以结果 = 1 * 2 = 2
e-- : e = 1

再次 while(e > 0) 计算结果为真,因为 e=1 > 0
结果 = 2 * 2 = 4
e-- : e = 0

现在再次检查 while(e > 0),它的计算结果为 false,while 循环结束。

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

让我们考虑 for 循环的一个特定实例,并假设在该实例中 e = 5(这将在 i = 5 时发生)。 所以,我们就是运行while循环直到e大于0,也就是5次。 这 5 次中的每一次,我们都将结果(最初为 1)乘以 2 并更新它。 因此,在 while 循环的 5 次 运行 结束时,我们将完成 2^5,然后我们打印 2 的 i(5) 次方。 现在,为 for 循环的每个值实现此逻辑。