编辑代码

public class Test {
    public static void main(String[] args) {
        //定义变量
        int i,j,k,q;
        //打印菱形的上半部分,左边打印倒直角三角形的空格,右边打印等腰三角形
        for( i = 1;i < 6; i ++) //外循环控制行数,共打印五行
        {
            //左边打印倒直角三角形空格
            for(j = 5;j > i;j--) //与外循环关联,初始值不变,表达式变化,控制打印的列数
            {
                System.out.print(" ");
            }
            //右边等腰三角形
            for(q = 1;q < i*2;q++) //与外循环关联,初始值不变,表达式变化,打印奇数列13579
            {
                System.out.print("*");
            }
            for(k = 9;k > i+4;k--) //与外循环关联,初始值不变,表达式变化,控制打印的列数
            {
                System.out.print(" ");
            }
            System.out.println();    //换行
        }
        //打印菱形的下半部分,左边为直角三角形的空格,右边为倒的等腰三角形
        for(i = 1; i < 5; i++) //外循环控制行数,共打印四行
        {
            //左边直角三角形空格
            for(j = 1;j <= i;j++) {    //与外循环关联,初始值不变,表达式变化,共打印五行
                System.out.print(" ");
            }
            //右边倒直角三角形
            for(q = i*2;q < 9 ;q++) {    //与外循环关联,初始值变化,表达式不变,打印奇数列7531
                System.out.print("*");
            }
            System.out.println();    //换行
        }
    }
}
/*执行过程
1.1i=1,i<6为真,进入循环//执行第一行
		j=5,j>i为真,进入循环,输出" "
		j--,j=4,j>i为真,进入循环,输出" "
		j--,j=3,j>i为真,进入循环,输出" "
		j--,j=2,j>i为真,进入循环,输出" "
		j--,j=1,j>i为假,结束第一个内层循环,开始执行第二个内层循环
		q=1,q<i*2为真,进入循环,输出"*"
		q++,q=2,q<i*2为假,结束内层第二个循环
		k=9,k>i+4为真,进入循环,输出" "
		k--,k=8,k>i+4为真,进入循环,输出" "
		k--,k=7,k>i+4为真,进入循环,输出" "
		k--,k=6,k>i+4为真,进入循环,输出" "
		k--,k=5,k>i+4为假,结束第一个内层循环,开始执行第二个内层循环
		//换行
1.2、i++,i=2,i<6为真,进入循环//执行第二行
		j=5,j>i为真,进入循环,输出" "
		j--,j=4,j>i为真,进入循环,输出" "
		j--,j=3,j>i为真,进入循环,输出" "
		j--,j=2,j>i为假,结束第一个内层循环,开始执行第二个内层循环
		q=1,q<i*2为真,进入循环,输出"*"
		q++,q=2,q<i*2为真,进入循环,输出"*"
		q++,q=3,q<i*2为真,进入循环,输出"*"
		q++,q=4,q<i*2为假,结束内层第二个循环
		//换行
1.3i++,i=3,i<6为真,进入循环//执行第三行
		j=5,j>i为真,进入循环,输出" "
		j--,j=4,j>i为真,进入循环,输出" "
		j--,j=3,j>i为假,结束第一个内层循环,开始执行第二个内层循环
		q=1,q<i*2为真,进入循环,输出"*"
		q++,q=2,q<i*2为真,进入循环,输出"*"
		q++,q=3,q<i*2为真,进入循环,输出"*"
		q++,q=4,q<i*2为真,进入循环,输出"*"
		q++,q=5,q<i*2为真,进入循环,输出"*"
		q++,q=6,q<i*2为假,结束内层第二个循环
		//换行
1.4i++,i=4,i<6为真,进入循环//执行第四行
		j=5,j>i为真,进入循环,输出" "
		j--,j=4,j>i为假,结束第一个内层循环,开始执行第二个内层循环
		q=1,q<i*2为真,进入循环,输出"*"
		q++,q=2,q<i*2为真,进入循环,输出"*"
		q++,q=3,q<i*2为真,进入循环,输出"*"
		q++,q=4,q<i*2为真,进入循环,输出"*"
		q++,q=5,q<i*2为真,进入循环,输出"*"
		q++,q=6,q<i*2为真,进入循环,输出"*"
		q++,q=7,q<i*2为真,进入循环,输出"*"
		q++,q=8,q<i*2为假,结束内层第二个循环
		//换行
1.5i++,i=5,i<6为真,进入循环//执行第五行
		j=5,j>i为假,结束第一个内层循环,开始执行第二个内层循环
		q=1,q<i*2为真,进入循环,输出"*"
		q++,q=2,q<i*2为真,进入循环,输出"*"
		q++,q=3,q<i*2为真,进入循环,输出"*"
		q++,q=4,q<i*2为真,进入循环,输出"*"
		q++,q=5,q<i*2为真,进入循环,输出"*"
		q++,q=6,q<i*2为真,进入循环,输出"*"
		q++,q=7,q<i*2为真,进入循环,输出"*"
		q++,q=8,q<i*2为真,进入循环,输出"*"
		q++,q=9,q<i*2为真,进入循环,输出"*"
		q++,q=10,q<i*2为假,结束内层第二个循环
		//换行
1.6i++,i=6,i<6为假,跳出第一个外层循环,执行第二个外层循环
2.1i=1,i<5为真,进入循环//执行第六行
		j=1,j<=i为真,进入循环,输出" "
		j++,j=2,j<=i为假,结束第一个内层循环,开始执行第二个内层循环
		q=i*2,q=2,q<9为真,进入循环,输出"*"
		q++,q=3,q<9为真,进入循环,输出"*"
		q++,q=4,q<9为真,进入循环,输出"*"
		q++,q=5,q<9为真,进入循环,输出"*"
		q++,q=6,q<9为真,进入循环,输出"*"
		q++,q=7,q<9为真,进入循环,输出"*"
		q++,q=8,q<9为真,进入循环,输出"*"
		q++,q=9,q<9为假,结束内层第二个循环
		//换行
2.2i++,i=2,i<5为真,进入循环//执行第七行
		j=1,j<=i为真,进入循环,输出" "
		j=2,j<=i为真,进入循环,输出" "
		j++,j=3,j<=i为假,结束第一个内层循环,开始执行第二个内层循环
		q=i*2,q=4,q<9为真,进入循环,输出"*"
		q++,q=5,q<9为真,进入循环,输出"*"
		q++,q=6,q<9为真,进入循环,输出"*"
		q++,q=7,q<9为真,进入循环,输出"*"
		q++,q=8,q<9为真,进入循环,输出"*"
		q++,q=9,q<9为假,结束内层第二个循环
		//换行
2.3i++,i=3,i<5为真,进入循环//执行第八行
		j=1,j<=i为真,进入循环,输出" "
		j=2,j<=i为真,进入循环,输出" "
		j=3,j<=i为真,进入循环,输出" "
		j++,j=4,j<=i为假,结束第一个内层循环,开始执行第二个内层循环
		q=i*2,q=6,q<9为真,进入循环,输出"*"
		q++,q=7,q<9为真,进入循环,输出"*"
		q++,q=8,q<9为真,进入循环,输出"*"
		q++,q=9,q<9为假,结束内层第二个循环
		//换行
2.4i++,i=4,i<5为真,进入循环//执行第九行
		j=1,j<=i为真,进入循环,输出" "
		j=2,j<=i为真,进入循环,输出" "
		j=3,j<=i为真,进入循环,输出" "
		j=4,j<=i为真,进入循环,输出" "
		j++,j=5,j<=i为假,结束第一个内层循环,开始执行第二个内层循环
		q=i*2,q=8,q<9为真,进入循环,输出"*"
		q++,q=9,q<9为假,结束内层第二个循环
		//换行
2.5i++,i=5,i<5为假,结束循环
*/