首先 确定的输出结果是:

那么怎么才能做到这样呢?

1、首先分析图形的结构

可以看到 图形共5行 那么 是否可以建立一个for循环语句 使其控制在5行?答案是肯定的。

for(int i = 1 ;i <= 5 ;i++ ){}

这样 就建立了一个循环5次的for循环代码块,为最外圈的循环。

2、然后 分析图形是怎样构成的 可以把图形拆分为以下几部分:/p>

可以把图形拆分为这样三个三角形。

3、建立1号空白三角形

可以看 第一行是输出4个空格 第二行输出3个空格 第三行输出2个 第四行输出1个 第五行没有

从这个规律可以看出 是依次递减的规律 那么如何实现呢?

可以想象从1到5 中间有四个数字;从2到5中间有3个数字 从3到5……

是不是可以利用这个原理呢?答案是当然的。那么如何实现?请看代码:

for(int i = 1;i<=5 ;i++) {  for(int j = 5; j >= i ; j--)//建立1号图形    System.out.print(" ");  System.out.println();}

第一个for语句就是刚才定义的五次循环语句

第二个for循环 来进行解析:

首先 定义一个int类型的j变量 给j赋值为5

然后想 既然要缩短距离 那么每次循环j就-1 那么刚好符合的要求:

第一次大循环 i=1 j=5, 所以符合j>=i的条件然后输出一个空格 然后j-1 现在j的值为4符合j>=i,再输出

……

一直到j=0,j>=i不符合 跳出内循环

现在到System.out.println(); 换行

现在回到外循环 i++ ,i变成2 符合i=i,符合 输出一个空格 j-1

j现在为4 j>=i 符合 输出一个空额 j-1

……

一直到j=1,j>=i 不成立 跳出内训还 然后换行

然后i+1 然后再进入内循环……

如此循环下去 形成了一个四行的倒三角 1号图案形成。

4、建立2号图形 和1号图形原理完全相同 不过正好相反

for(int i = 1 ;i<=5 ;i++){  for(int j = 5; j >= i ; j--)//建立1号图形    System.out.print(" ");  for(int j = 1; j <= i; j++)//建立2号图形    System.out.print("*");  System.out.println();}

如建立1号图形相同,大家可以自己理解 如此2号建立

5、建立3号图形

for(int i = 1; i <= 5; i++){  for(int j = 5 ;i <= j; j--)//建立1号图形    System.out.print(" ");  for(int j = 1; j <= i; j++)//建立2号图形    System.out.print("*");  for(int j = 1; j < i; j ++)//建立3号图形    System.out.print("*");}

同样 如同1号二号相同 建立3号图形原理相同

但是大家注意一点 3号图形没有在第一行输出 所以要在第一次大循环中掐断它 让它在第二次大循环中输出

所以 这次的判断条件为 j < i 去掉了等于。

完整源码:

class Demo{public static void main(String[] args){for(int i=1;i<=5;i++){for(int j=5; i<=j; j--)System.out.print(" ");for(int j=1; j<=i; j++)System.out.print("*");for(int j=1; j<i; j++)System.out.print("*");System.out.println();}}}

投稿作者邮箱:1030691530@qq.com