为什么此for循环给出此输出?

时间:2019-12-17 06:23:23

标签: java for-loop

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

我认为应该是:15 17 19

here is my explanation

代码如下:

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 + " ");
            }
        }
    }
}

4 个答案:

答案 0 :(得分:2)

我认为Anwer是对的。

我将解释代码的工作方式以便理解。

第一

  

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

谢谢,祝您编程愉快。

答案 1 :(得分:1)

按如下所示更改条件,以获得所需的结果。

for(int x = 1; x<10; x++) {
            y++;
            if(x>6) {
                System.out.print(++y + " ");
            }
        }

答案 2 :(得分:0)

首先让我们了解for循环中发生的操作:

  • y ++将在代码行执行完毕后执行+1操作

  • ++ y将首先执行+1操作,然后执行其余的代码行

现在,让我们看一下for循环:

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

对于每次迭代,我们将查看x和y的值:

x = 1,y = 7(第一次迭代开始)

x = 1,y = 8(迭代结束)

x = 2,y = 8(第一次迭代的开始)

x = 2,y = 9(迭代结束)

x = 3,y = 9(第一次迭代的开始)

x = 3,y = 10(迭代结束)

x = 4,y = 10(第一次迭代的开始)

x = 4,y = 11(迭代结束)

x = 5,y = 11(第一次迭代的开始)

x = 5,y = 12(y ++行)

x = 5,y = 13(x> 4,因此++ y执行)


逻辑已经很明显了,但是您可以继续自己调试它。

答案 3 :(得分:0)

希望这会有所帮助。 在这里,进行解释:

y=7 //At Start

当您进入循环时:

x = 1 and y = 8
x = 2 and y = 9
x= 3 and y = 10
x = 4 and y = 11
x = 5 // which makes the if condition true

y将变为12,如果System.out.print(++y + " ")进入 它会先递增然后打印。 因此,它将打印y = 13

类似地,当x = 6时,y将为14,如果x为15,则以此类推。