package test; public class Test { public static void main(String[] args) { for(int i=1;i<=5;i++) {//i控制层数 for(int j=1;j<=5-i;j++) {//该j控制上半段前面所打出的空格 System.out.print(" "); } for(int j=1;j<=2*i-1;j++) {//该j控制在上面那个空格后面打出2*i-1个*号 if(j==1||j==2*i-1) {//选择在上面那个空格后的第一个位置和最后一个位置打*,其余位置空格 System.out.print("*"); } else { System.out.print(" "); } } System.out.println();//该行输出完空格和*后换行进入下一个行的循环 } for(int i=6;i<=9;i++) {//该i控制6~9行的循环 for(int j=1;j<=i-5;j++) {//6~9行输出前面的空格,这里参照99乘法表的方法进行控制 System.out.print(" "); } for(int j=1;j<=19-2*i;j++) {//该j控制下半部分前面空格输出完成后打印19-2*i个*号, //额·~这里这个表达式我是解方程组算出来的,我觉得应该有其他方法 if(j==1||j==19-2*i) {//选择在上面那个空格后的第一个位置和最后一个位置打*,其余位置空格 System.out.print("*"); } else { System.out.print(" "); } } System.out.println();//该行输出完空格和*后换行进入下一个行的循环 } } }