Java 而嵌套在for循环中。减量运算符是如何工作的?
我想不出减量运算符(e--)是如何 在下面的代码中工作,所以我在下面编写了另一个类 得到同样的结果。我想知道减量运算符是如何工作的 在功率等级中实现该结果。-新手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 +
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);