版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjluocisoftstone/article/details/50753676
利用*号打印如下形式的图形
*
* *
* * *
* * * *
* * * * *
观察这个图形的特点可以初步知道:
1,对应第几行就有几个*号;
2,每个*号之间都有空格;
3,另外为了保持特定形状,*号之前也有特定数量的空格
为了做到这一点,我们可以逐步分解步骤:
1.先写一个循环控制行数,循环次数和要打印的最后一行*号个数一致
2.为了简单起见,可以认为每个*号后面都有一个空格,这样第一行就只有一个*号+“ ”,第二行则有两个*号+“ ”,以此类推
3.为了特定形状,每行第一个*号之前都有特定数量的“ ”,以上图为例第一行*号之前有4个“ ”,第二行第一个*号之前就只有3个“ ”,以此类推,最后一行没有
这样理解后,打印任意个*号组成的三角形代码也就差不多出来了
/**
* 用任意个*打印三角形,n必须为正整数
*
* @param n
*
*/
public static void printTriangle(int n) throws IllegalArgumentException {
if (n < 0) {
throw new IllegalArgumentException("不合法的参数" + n);
}
// 控制行数
for (int i = 1; i <= n; i++) {
// 打印每行第一个*之前的空格,第i行对应有n-i个
for (int k = n; k > i; k--) {
System.out.print(" ");
}
// 打印对应每行的"*"+空格,对应第i行打印i次
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
// 换行
System.out.println("");
}
}
这是printTriangle(20);的结果: