java打印菱形练习题。。。

int lay=7; //菱形的层数
    for(int i=1;i<=lay;i++){ //打印层数 
        for(int j=Math.abs((lay+1)/2-i);j>0;j--){//打印每行的空格 
            System.out.print("    ");//空格数量取决于调试器本身 
            } 

这句话什么意思

一共打印7层的一个菱形
第一个for 循环是从第一层开始打,一直打到第七层
j = Math.abs((lay+1)/2-i) 是计算这一行要打印几个空格

建议把空格换成*,可以看的更清楚一点

这是循环输出空格数,就是输出空白的次数,外循环7次,内循环次数根据公式Math.abs((lay+1)/2-i)返回的值确定,Math.abs()返回的是绝对值,比如i=1的时候,j=3,那第二个循环就会循环3次,输出3次空白,相当于菱形的第一层会输出3个空白,当i=2的时候,j=2,第二个循环就会循环2次,依次下去

public static void main(String[] args) {

    int lay = 7;
     for(int i=1;i<=lay;i++){ //打印层数 
        for(int j=Math.abs((lay+1)/2-i);j>0;j--){//打印每行的空格 
            System.out.print(" ");//空格数量取决于调试器本身 ,不同的调试器对于空格的占位输出不一样,根据打印出来的形状适当调整空格的个数
         } 
        for(int k = Math.abs((lay+1)/2-i); k < lay - Math.abs((lay+1)/2-i) ; k++) {//打印*
            System.out.print("*");
        }
        System.out.println();
     }
}