public class Main {
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);
}
}
}
我正在阅读由Herbert Schildt编写的Java入门指南。我不清楚上面的代码。当我在第一次迭代中设置为零时,while语句会被跳过,因为e将被设置为零,while条件将不成立。因此,我将是1,结果将是1,这个答案将被打印出来。虽然“Java,初学者指南”中的语句示例
在第二次迭代中,i和e将是1,因此while语句将被执行,因为e> 1,因此结果将是2.到目前为止,这么好。然而,e在计算结果后递减1,所以现在e回到0.
第三次迭代,其中我被设置为2是我迷路的地方。由于e现在再次为零,这次迭代会发生什么?由于while条件不再是真的,程序是否不会从while循环中退出并重新回到开始位置?如果是这样,不会导致回到1,在运行i = 2的while循环后,结果会等于2而不是4。
我明白我的所有后续迭代中的程序,因为e经过第三次迭代后不会再次置零。但是我很困惑,为什么在第二次迭代之后e的累积结果不会因为递减e而丢失。
感谢您的帮助。
'因为e现在再次为零 - - 事实并非如此。在for循环的每次迭代中,e被赋予i的当前值。 – Eran
你为什么认为那个赋值'e = i;'困扰什么'e'以前? – Tom
我不知道为什么人们downvote你的问题。您提供了一个代码并详细描述了您的问题。你做得很好。 –