我正在一个while循环中,它的i减少了,但是我期望10次使用两次。我认为,我们在开头使用10,然后在while循环开始时使用。因为System.out.println(i),所以我们写10;然后我们看到我- ..所以我认为我们可以再使用10个,然后将其减少到9个。您能解释为什么输出返回如下吗?
int i=10;
while(i>1){
System.out.println(i);
i--;
}
预期输出为 10 10 9 8 7 6 5 4 3 2
但是它给 10 9 8 7 6 5 4 3 2
答案 0 :(得分:5)
您的错误观念:这些修复前/修复后操作仅影响“当前”表达。例如,它们具有某些封闭循环上下文的否概念。您假设--i
以某种方式神奇地影响了while条件。没有。请参阅here,以了解更多信息。
您的代码为:
换句话说:如果要查看打印输出中的差异,请更改代码以执行以下操作:
System.out.println(--i);
System.out.println(i--);
例如。
在您的代码中,您可以单独执行该操作。因此,该行可以写为i--
,--i
或i = i -1
或i -= 1
。没关系该表达式将i减1,并存储新值。同样:要查看不同的结果,您需要直接使用该操作的结果!
答案 1 :(得分:0)
您所说的不正确,当您进入while循环时,它已经是第一次迭代,因此第一个打印的值为10。然后减小该值,使第二个值为9。