loops - Java中的小代码导致令人困惑的结果
问题描述
public class Program {
public static void main(String[] args) {
int x = 1;
for(; x < 6; x++) {
x = x * x;
}
System.out.printf("%d", x);
}
}
我已经学习java几个月了。令我惊讶的是,我在sololearn 中发现了这样一个固定的问题,我已经证明自己的答案是26。我理解正常的for 循环它是如何工作的,但我不理解这种格式。
解决方案
由于x
循环的计数器在每次迭代时都会递增,并且它也在同一个循环中被修改,所以对于初学者来说可能有点混乱。
从 value 开始
1
,你进入循环,因为1 < 6
,你平方1 * 1 = 1
,然后循环的下一次迭代,在那里你得到x++
,因此1 + 1 = 2
,再次平方,2 * 2 = 4
再次x++
,,4 + 1 = 5
再次平方5 * 5 = 25
。
然后我理解的令人困惑的部分开始发挥作用,你很困惑为什么我们得到了决赛x++
。迭代何时x
成为25
,是当我们进入时x = 5
,即< 6
,然后在循环中的语句执行后,您然后为下一次迭代执行递增/递减,即25 + 1 = 26
,只有在那之后我们才离开循环并获得您的神秘的结果!
推荐阅读
- reactjs - 使用 Formik 获取更改的字段值
- nuxt.js - 等号在 PrismJS 中始终以白色突出显示
- text - SSIS 导入奇数文本文件
- c# - JSON 到自定义对象层次结构
- javascript - 如何在特定条件下使用猫鼬获得不同的对象?
- java - Beam WordCount Docker 映像无法在 Flink Runner 上启动,但 AvroCoderregistrar 不是 SubType 异常
- .net-core - 'reportgenerator' 不是内部或外部命令、可运行程序或批处理文件
- python - 如何在熊猫中未选择的情况下获取行?
- python - 做一个负数正python
- r - 如何将单个列表转换为 R 中用于大数据的组合数据框?