用于循环逻辑、递增和递减的简单Java

用于循环逻辑、递增和递减的简单Java,java,if-statement,for-loop,increment,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++) {

我这里有一个简单的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);
    }
}
公共类Test9{
公共静态void main(字符串[]args){
int x=0;
int y=10;
对于(intz=0;z<5;z++){
如果((y-->7)| |(++x>2)){
y--;
}
}
系统输出打印项次(y+“”+x);
}
}
输出是什么?为什么

为了知道该程序的正确输出,有必要在“for”循环过程中保持所有三个int变量x、y和z的运行计数

在循环开始时,z=0、x=0和y=10。 然后转到if语句,查看y的当前值是否大于7。需要注意的是,y——意味着它将把y减量1。这意味着在条件语句被判定为真或假之后

所以,因为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。这两个操作都为false,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的所有基础知识。谢谢。

你的逻辑是正确的。。。但问题是什么呢?

为什么不在循环中放入一个print语句来自己验证呢?我不允许实际编译这个。这是一个纸上测试的问题,所以我必须知道答案,而不只是自己运行它。但是,是的,你的权利。。。从现在开始我就这么做。问题是:程序的输出是什么?这是我最近参加的一个java测试中的一个问题。我这样做只是为了确保我用正确的方式思考这个问题。谢谢你的仔细检查。我也在想同样的事情。。。这不是最好的问题,所以。。。你的答案是尽可能长的。你有没有其他地方建议我把这样的东西拼出来更好?只是为了锻炼。