public class For
{
       public static void main(String agrs[])
        {
for(int i=1;i<=9;i++)
              {   
  for(int j=1;j<=i;j++)
                    { 
      System.out.printf("%d*%d=%2d\t",i,j,i*j);
           }
  System.out.println(); 
     }
         }
}
    请问内外层2个循环的变量i 和 j的自增,是j在里面顺序循环1次下来就自增,     还是说要等到外层循环转一圈回来又到 for(int j=1;j<=i;j++)这条语句的时候j再自增。
    
求思路清晰的前辈 清晰的说明一下2个或者多个for循环里面的变量自增的顺序或者有什么规律。

解决方案 »

  1.   

    就拿你这个例子说明好了,循环顺序是:
    (i=1,j=1)
    (i=2,j=1) (i=2,j=2)
    (i=3,j=1) (i=3,j=2) (i=3,j=3)
    (i=4,j=1) (i=4,j=2) (i=4,j=3) (i=4,j=4)
    ...
    ...
    也就是说,外层For要等里层For循环结束后才会再自增
    并且外层每次自增后,里层的j又会初始化为1,然后在进行里层循环
      

  2.   

    i=1,j循环一边,i=2,j在循环一边。。
      

  3.   

    i == 1
        j == 1i == 2
        j == 1 j == 2......i == 9
        j == 1 j == 2 ...... j == 9
      

  4.   

    顺序是这样的:
    外层for循环 i赋值为1,再判断i<=9,若条件成立,执行for中语句。进入内层for循环,j赋值为1,再判断j<=i,若条件成立,执行内for中语句,内for中执行完毕,再执行j++;再判断j<=i,若条件成立,执行内for中语句,内for中执行完毕,再执行j++;依次完成内层for循环。内层执行完后,执行i++,再判断i<=9,若条件成立,执行for中语句。在判断时,若条件不成立,退出循环,也不执行 ++ 操作。
      

  5.   

    外面层循环中,i每执行一次,里面层循环中j就执行当前i的数字的次数,也就是说里面层的执行次数会一次次的增多,而外面层每次只会执行一次,有点绕,慢慢就会明白了.
    总结:从外往内,外一内N,且N随外i的递增而递增.
      

  6.   

    运行结果:
    1*1= 1
    2*1= 2 2*2= 4
    3*1= 3 3*2= 6 3*3= 9
    4*1= 4 4*2= 8 4*3=12 4*4=16
    5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25
    6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
    7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
    8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
    9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
    当 i = 1时;j = 1; i * j =1;
    当 i= 2 时  j =1,j = 2; 2*1=2,2*2=4;
    ....
      

  7.   

    for(int i=1;i<=9;i++)
      {   
    for(int j=1;j<=i;j++)
      {  
    System.out.printf("%d*%d=%2d\t",i,j,i*j);
    }
    System.out.println();  
    }
      }
    }
    循环的判断,先执行i=1,i<9然后就进入了for的大括号里面的内容,只有第二个for循环的条件一直满足,就一直执行下去,当j>i,这个内部循环就跳出,执行i=2,然后内部循环又一直执行。