简单的Java For Loop Logic,Increments和Decrements

时间:2011-06-19 02:38:36

标签: java if-statement for-loop increment

我这里有一个简单的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的所有基础知识。感谢。

1 个答案:

答案 0 :(得分:0)

你的逻辑是正确的......但实际上问题是什么?