首页 > 解决方案 > 为什么这个 for 循环会给出这个输出?

问题描述

为什么是以下代码的输出:13 15 17

我认为应该是:15 17 19

这是我的解释

这是代码:

package com.example.barker;
class dog {
}

public class Bark {
    public static void main(String[] args) {
        Bark o = new Bark();
        o.go();
    }

    void go(){
        int y =7;
        for(int x = 1; x<8; x++) {
            y++;
            if(x>4) {
                System.out.print(++y + " ");
            }
        }
    }
}

标签: javafor-loop

解决方案


我认为安维尔是对的。

我将解释代码的工作以得到理解。

第一的

y=7

x=0

在第一次迭代之后

y=8 (y++;) 和 x=1 (int x = 1;) (不打印,因为 x 不大于 4)

第二次迭代后

y=9 (y++;) 和 x=2 (x++;) (不打印,因为 x 不大于 4)

第三次迭代后

y=10 (y++;) 和 x=3 (x++;) (不打印,因为 x 不大于 4)

第四次迭代后

y=11 (y++;) 和 x=4 (x++;) (不打印,因为 x 不大于 4)

第五次迭代后

y=12 (y++;) 和 x=5 (x++;)

现在 x 大于 4 并进入System.out.print(++y + " ");

这里你写 ++y ,表示预增量

即,递增 y 并打印

即,y=13 和 x=6 打印(13)

下一次迭代后

y=14(y++;) 并且在打印 y 的值之前执行++y 即 y=15 (++y;) 打印(15)

下一次迭代后

y=16(y++;) 并且在打印 y 的值之前执行++y 即 y=17 (++y;) 打印(17)

所以输出是13 15 17

感谢和快乐的编码。


推荐阅读