首页 > 解决方案 > 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 循环它是如何工作的,但我不理解这种格式。

标签: loopsjava

解决方案


由于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,只有在那之后我们才离开循环并获得您的神秘的结果!

检查下图,然后使用笔纸和调试器跟随代码。 在此处输入图像描述


推荐阅读