遇到了这段代码并试图解决它......但是不太明白为什么它打印出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);
}
答案 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