无法弄清楚为什么打印63

时间:2017-02-13 13:15:55

标签: java if-statement for-loop

遇到了这段代码并试图解决它......但是不太明白为什么它打印出63?

public static void main(String[]args)
{
    int x = 0;
    int y = 0;
    for(int z= 0; z < 5; z++)
    {
        if ((++x > 2)&&(++y > 2))
        {
            x++;  
        }
    }
    System.out.println(x+""+y);
}

1 个答案:

答案 0 :(得分:1)

首先,++ x表示x被添加1,然后读取if语句中的检查。因此,第一次检查时x为1。

但是在Java中还有另一件事,如果你检查两个语句,就像你在下面做的那样:

if ((++x > 2)&&(++y > 2))

如果第一次检查失败,则第二次检查不会被执行。

我在控制台中编写输出,对于所有循环周期都有-----:

x: 0
y: 0
z: 0
if: (false && (not executed) )
x: 1
-----
x: 1
y: 0
z: 1
if: (false && (not executed) )
x: 2
-----
x: 2
y: 0
z: 2
if: (true && false)
x: 3
y: 1
-----
x: 3
y: 1
z: 3
if: (true && false)
x: 4
y: 2
-----
x: 4
y: 2
z: 4
if: (true && true)
x: 5
y: 3
x: 6
-----
63