public class Test { public static void main(String[] args) { //输入行数 print(5); } public static void print(int sum) { int number=0; for(int i=1;i<=sum;i++) { int emptyNumber=sum-i;//计算空格数 经过计算是 总行数-行数 int starNumber=2*i-1;//计算星数, 经过计算是 2倍的行数-1 if(i==sum) { number=i+starNumber;//保存一个总数,用于后面的倒着输出用 } for(int z=0;z<emptyNumber;z++)//遍历输出,得到一个三角形 { System.out.print(" "); } for (int j = 0; j < starNumber; j++) { System.out.print("*"); } System.out.println(); } //开始输出下面的一部分 int newrow=sum+1;//计算开始的行数 int sumrow=2*sum-1;//计算新总行数 for(int i=newrow;i<=sumrow;i++) { int emptyNumber=i-sum;//计算空格数,经过计算是 当前行数-旧的总行数 //计算星数,经过计算 星数+空格数+行数=number,也就是最大三角形的星数+它的行数 int starNumber=number-i-emptyNumber; //遍历输出 for(int z=0;z<emptyNumber;z++) { System.out.print(" "); } for (int j = 0; j < starNumber; j++) { System.out.print("*"); } System.out.println(); } } }
结果图: