Java 而嵌套在for循环中。减量运算符是如何工作的?

Java 而嵌套在for循环中。减量运算符是如何工作的?,java,Java,我想不出减量运算符(e--)是如何 在下面的代码中工作,所以我在下面编写了另一个类 得到同样的结果。我想知道减量运算符是如何工作的 在功率等级中实现该结果。-新手 int result, e; for(int i=0; i < 10; i++) { result = 1; e = i; while(e > 0) { result *= 2; e--; } System.out.println("2 to the " + i +

我想不出减量运算符(e--)是如何 在下面的代码中工作,所以我在下面编写了另一个类 得到同样的结果。我想知道减量运算符是如何工作的 在功率等级中实现该结果。-新手

int result, e; 
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);        
} 
int结果,e;
对于(int i=0;i<10;i++){
结果=1;
e=i;
而(e>0){
结果*=2;
e--;
} 
System.out.println(“2到”+i+
“权力是”+结果);
} 
为获得相同结果而编写的代码

int result = 1; 

for(int i=0; i < 10; i++) { 


  if (i > 0) {
  result*=2;

  }
  System.out.println("2 to the " + i +  
                     " power is " + result);

}                     
int结果=1;
对于(int i=0;i<10;i++){
如果(i>0){
结果*=2;
}
System.out.println(“2到”+i+
“权力是”+结果);
}                     

因此第一个示例是重置主for循环每次迭代的结果,因此每次都需要从头开始重新计算,而第二个示例则保留以前的计算值。第二个示例中的if是不需要的。

减量运算符修改调用它的变量。因此
e--
实际上是
e=e-1
(除了表达式的整体结果不同,见下文)

此代码:

result = 1; 
e = i; 
while(e > 0) { 
  result *= 2; 
  e--; 
} 
result=1
开始,然后循环
i
迭代,使
result
中的值加倍。使用<代码>对应于的等效代码,您似乎更喜欢:

result = 1; 
for (e = 0; e < i; e++) {
  result *= 2; 
} 

我发现通过放置一个System.out.println(e),我可以“看到”变量“e”的行为,从而理解递减

class Power {
 public static void main(String args[]) {
  int e;
  int result;

  for(int i=0; i < 10; i++) {
   result =1 ;
   e = i;

   while(e > 0) {
    System.out.println(e); // not part of the original program 
    result *= 2 ;            
    e--;
    System.out.println(e); // not part of the original program 
}

这是输出:

C:\Users\enrique\Desktop\Hello.java>JavaPower:1,0,2,1,1,0,3


e=1(迭代1),2^1,e(1)减至0,e=2(迭代2),2^2,e(2)减至1,e=1重新输入while,但由于2^1已注册,e(1)减至0,e=3(迭代3),2^3…

“功率等级”=第一个代码我很难理解如果你想出几个小例子,它可能会帮助你。如果你问一个真正的问题,它会帮助你。。。你到底不明白什么<代码>e在上面的代码段中递减,因为程序员可能以前用过C(用C这样做速度更快)。当你说e时,它基本上是将结果平方
e
乘以
,你用的是e=e-1的速记法。
@sᴜʀᴇsʜᴀᴛᴛᴀ: 如果不使用表达式的整体结果,则为“是”。但是
x=e--
x=(e=e-1)不相同。这两个代码生成相同的结果,这是一系列println语句,从i=0到i=9。如果没有第一个代码中的e--位,它就不会得到这个结果。我想了解这一点。我也理解后缀前缀的事情。这种理解,也许现在有问题了,不能帮助我自己找到答案,也不能帮助我找到为什么e——平方结果并保持其值的答案。当e取迭代i的值时,为什么它会递减?一想到我的问题可能被认为是愚蠢的,我就畏缩。我非常想了解这一点。谢谢。@user2869580:第一个代码是每次重新计算结果。您的第二个代码段保留了以前的结果。在第一个代码段中,
e
除了控制循环外,与计算结果无关。结果主要由重复的
result*=2
计算,该值在每次循环迭代时将存储在
result
中的值加倍。需要使用if来获得第一个println语句,以获得2到0的幂的答案。我们不能把代码的编写方式翻两倍。这一部分被跳过。其余部分在result*=2;的情况下完成;。提前谢谢。
class Power {
 public static void main(String args[]) {
  int e;
  int result;

  for(int i=0; i < 10; i++) {
   result =1 ;
   e = i;

   while(e > 0) {
    System.out.println(e); // not part of the original program 
    result *= 2 ;            
    e--;
    System.out.println(e); // not part of the original program 
//System.out.println("2 to the " + i +             
              //" power is " + result);