一、先上要实现的效果图:
二、分析思路:
## 1.如果刚开始看到这个需求没有思路,可以先实现非空心三角形,如下效果:
##2.如果还是没有思路,可以再对需求进行扩充分析,实现半个非空心三角形,如下效果:
以红框框住的*为中心对照整个的非空三角形实现的半个三角形效果就是这样子的了。
三、实际分析:
## 1.首先我们要知道实现该效果肯定不是说一行一行敲出来的*,否则要是实现100层的效果,就呵呵了;
## 2.通过效果图也能知道从上到下每一层展示的 【*】数量 不同,而且要考虑到这个层数可能会发生改变。有可能是3层,5层,10层。。。
## 3.那就针对可能的不同层数,通过for循环进行实现;
四、 以图中4层为参考分析,先将层数写死,将半个非空三角形的需求实现出来:
##分析第1层:1个 *
## 第2层:2个*
## 第3层:3个*
## 第4层:4个*
可以发现,**每一层的层数既可以代表该层的*数,也就是说每一层的 * 的个数==该层所在层数:**
for(int i=1;i<=4;i++){
//我们把 i 代表对应的层数:
// 每层的*数展示: 【j<=i】: 每层*个数 <=该层
for(int j=1;j<=i;j++){
//j 代表每层的*个数
System.out.print("*");
}
//将每层*数展示后换行继续下一行
System.out.println();
}
## 以上代码就实现了我们需要的半个非空三角形。
五、再实现非空的整个三角形:
## 分析第1层: 1个*
## 第2层:3个*
## 第3层:5个*
## 第4层:7个*
找找看每一层的层数和该层的*数之间的关系, 以半个三角形为基础,
## 对比分析*数:
1层 ----》多了0个 ;
2层-----》多了1个;
3层-----》多了2个;
4层-----》多了3个;
## 是不是**在半个三角形的基础上,每层多的*数 是该层 -1**。
**再回头看之前的代码,关于每层的*数和层的关系是 j<=i,那么现在的关系就是j<=i+i-1,即j<=2xi-1;**
for(