2015-09-19 150 views
1

我必须从一个有2个foor循环的练习簿和一个if语句,我不能理解输出的代码!所以我猜测我不明白for循环如何工作混淆for循环的输出

class Multifor { 

    public static void main(String[] args) { 

     for (int x = 0; x < 4; x++) { 

      for (int y = 4; y > 2; y--) { 
       System.out.println(x + " " + y); 
      } 
      if (x == 1) { 
       x++; 
      } 
     } 
    } 
} 

输出为:

0 4, 
0 3, 
1 4, 
1 3, 
3 4, 
3 3, 

第一个问题:X传来如何两倍0的输出,如果在for循环它由1每次代码运行到循环时间增加,由代码到达代码的System.out.println部分的时间为1,再加上增量在if语句中,如果x == 1,则为1;第二个问题:如果y = 4,并且它每次运行for循环时递减1如何输出第一个3,然后是4?等等,如果我没有看到y变量的任何增量?

+0

抢铅笔和纸张或通过调试器中运行,并通过线遵循它行。没有什么太复杂的,所以手动手动不应该是一个问题,再加上你会回答你自己的问题。 – csmckelvey

回答

4

第一个问题:怎么来的X是在两次输出0,如果在for循环 它是由1每次代码运行到循环,由 时间码reachs的System.out的时间增加。 println的部分代码是 alredy 1,如果x == 1,则在if语句中加上1的增量; 这将使X 2.

每次输入你的主要x循环时间,你的内循环的第二输出y循环两次。

另外,当您第一次输入循环时,x的值是您在for声明中分配的值。

这就是为什么x的值仅在两次打印中更改一次的原因。

第二个问题:如果y = 4,并且每次运行 循环时递减1,输出先是3,然后是4?等等,如果我不 看到y变量的任何增量?

y的输出是4然后3.

0 4 
0 3 
1 4 
1 3 
3 4 
3 3 
+0

是的,你的权利从4开始,但y值又是如何从3增加到4再次增加? –

+0

当你回到循环时,由于'int y = 4',y的值会回到4 ...如果我的回答对你有帮助,请不要犹豫,验证它:) –

+0

是的,我现在明白了,非常感谢,你的帮助很大! –

2

对于x和y的内循环将运行两次每一个值。 首先,当y = 4时,y = 3,当y变成2时,条件变为false,因此它出现在内部循环中,然后它将检查“是否条件”,即x是否等于1还是不。如果x等于1,则x的值将递增为2. 这一直持续到外循环中的条件为真。 所以输出会是这样:

when x=0 y=4,3 when x=1 y=4,3 when x=3 y=4,3

输出的顺序将是: 0 4 0 3 1 4 1 3 3 4 3 3