public class Triangle { public static void main(String[] args) {
for(int i=0;i<6;i++){
for(int j=0;j<i;j++){
System.out.print(" ");
}
for(int k=0;k<6-i;k++){
System.out.print("*");
}
System.out.println();
} }}
输出
倒三角;
提问:
两个内循环是怎么运行的?是第一个内循环先执行j=0然后执行下一个内循环k=0然后在执行j=1再执行k=1.。。这样的吗?要不是,那怎么会输出倒三角的"*"呢?

解决方案 »

  1.   

    j循环完了才是k,好好看看j和k的取值范围。
      

  2.   

    j,k两个循环是独立的啊
    i=0 j不打印       k打印 6个*
    i=1 j打印一个空格 k打印 5个*
    .....................
    以此类推
      

  3.   

    顺序是先执行j再执行k,但是执行完j的条件int j=0;j<i;j++才会执行k的,执行完k的条件int k=0;k<6-i;k++再执行System.out.println();
    上面是执行一次i的循环,依次循环下去直到i的条件int i=0;i<6;i++完毕。
      

  4.   

    当i=0的时候是第一循环,因为j的条件是j=0;j<i;j++这个,不满足就直接执行k的循环,所以第一行输出******,第二次满足j的条件循环一次,输出空格一个,再执行k的循环 *****
    最后依次得到结果:
    ******
     *****
      ****
       ***
        **
         *
      

  5.   

    楼主,您把程序想象成一个6乘6的矩阵,分别打印空格和“*”。
    j循环是打印空格,在i行中,空格的个数 j 跟行数 i 相等,即j=i,其余用k个*填充,所以k=6-i。
    所以每行
      

  6.   

    必然是先执行完j再执行k啊,这完全是两个并列的for循环,而且LZ为啥会有这个疑问呢?
      

  7.   

    最外层的for循环是用来控制行数
    在内层中的两个for循环分别是用来控制打印空格的个数和"*"号得个数的
    执行顺序是先执行j的循环,在执行k的循环,不是同步进行的
      

  8.   

    LZ的意思你们没看明白
    他是说打印出这样的结果必然是先执行J 然后再执行K
    不然就不会有空格和*在一行出现了
    right?