我这里有一个简单的Java程序。我写这篇文章是为了逐步完成程序的逻辑,并验证它为什么返回它所做的输出。对于我解释这一点的方式,我将不胜感激。
我首先显示程序,然后解释它是如何工作的。
public class Test9 {
public static void main (String [] args) {
int x = 0;
int y = 10;
for (int z = 0; z < 5; z++) {
if ((y-- > 7) || (++x > 2)) {
y--;
}
}
System.out.println(y + "" + x);
}
}
输出是什么?为什么?
为了知道这个程序的正确输出,在&#34; for&#34的过程中保持所有三个int变量x,y和z的运行记录是必要的。 ;循环。
在循环开始时,z = 0,x = 0,y = 10。 然后进入if语句,查看y的当前值是否大于7.重要的是要注意y--表示它会将y后递减1.这意味着AFTER条件语句已被判定为真或假。
因此,因为y = 10,当前,10> 7,并且该语句为True。由于此条件语句为真,并且它看到下一个OR运算符,因此它跳过++ x> 2,因为它不需要知道它是TRUE还是FALSE。现在执行循环的内容y--,这使得y = 8。在条件语句中减少一次,在if语句中减少一次。 x仍为0。
下一次迭代从,z = 1,y = 8开始。 X = 0。适用相同的规则,因此8> 7,y将减2并且x将保持不变。
第三次迭代从z = 2开始,y = 6,x = 0。这一次,6> 7是假的,但是y仍然是递减的。因此,y = 5,并且++ x> 2,将评估为1> 2,因为++ x是前缀版本并且在操作发生之前添加1。两个操作都是假的,y不会再次递减。
第四次迭代从z = 3开始,y = 5,x = 1。 5> 7是假,y减少到4. 2> 2也是假,因此没有第二减少到y。
第五次迭代从z = 4开始,y = 4,x = 2。 4> 7是假的,y减少到3. 3> 2是真的!所以y将第二次递减到2.
结束值为y = 2,x = 3。因此程序输出将是: 2 3
了解增量和减量何时发生以及何时不发生这一点非常重要,尤其是当它们位于if语句的条件语句中时,因为它会影响最终输出。
如果有条款/行话,说话的方式或我的逻辑中的缺陷,请告诉我。我试图了解java的所有基础知识。感谢。
答案 0 :(得分:0)
你的逻辑是正确的......但实际上问题是什么?