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++) //与外循环关联,初始值不变,表达式变化,打印奇数列1,3,5,7,9
{
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++) { //与外循环关联,初始值变化,表达式不变,打印奇数列7,5,3,1
System.out.print("*");
}
System.out.println(); //换行
}
}
}
/*执行过程
1.1、i=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.3、i++,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.4、i++,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.5、i++,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.6、i++,i=6,i<6为假,跳出第一个外层循环,执行第二个外层循环
2.1、i=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.2、i++,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.3、i++,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.4、i++,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.5、i++,i=5,i<5为假,结束循环
*/