打印空心三角形
需求: 输入行数,打印如下图所示的空心三角形
思路:
把这个图形进行拆解,拆解成几个简单的图形在组合
我的想法是把这个图形拆解成3个部分(见下图)
``
第一部分(红色):第一列星星
第二部分(绿色):第三行开始并且每行依次增加数量的空格部分与最下面一行的星星(不包括首尾两个星星)
第二部分可以拆开为空格部分和底行星星部分
第三部分(蓝色):从二行开始末尾的星星
这三个部分分别对应三个内层循环
代码如下(详细思路在代码块中):
public static void main(String[] args) {
System.out.println("请输入空心三角形的行数:");
int line = new Scanner(System.in).nextInt();//从控制台接收行数
for (int i = 1; i <= line; i++) {//外层循环:控制图形的行数
for (int j = 1; j <=1; j++) {//内层循环1:也就是第一部分:控制第一列都为星星即可
System.out.print("*");
}
for (int j = 3; j <= i; j++) {//内层循环2:第二部分:空白部分+底行星星
//此时要注意,第二部分是从第三行才开始出现
//j从3开始,当i=1和2时,循环条件不成立,循环不会开始
if(i<line) {//不是最后一行时,全部打印空格
System.out.print(" ");
}else if(i==line) {//最后一行时才打印星星
System.out.print("*");
}
}
for (int j = 2; j <= i; j++) {//内层循环3:第三部分
//此时要注意,第三部分是从第二行才开始出现
//j从2开始,当i=1时,循环条件不成立,循环不会开始
if(j==i) {//由图形可知,星星出现的位置和行数i一致,
//如第二行第二个位置
//第三行第三个位置
//所以要判断j是否等于i,等于的时候才打印星星
System.out.print("*");
}
}
System.out.println();//每次循环后换行
}
}
效果如下:
输入5行:
输入6行:
以上仅是个人思考,有更简便的方式欢迎相互交流~