打印空心的金字塔 — 化繁为简
*
* *
* *
* *
*********
【代码实现】
public class Stars {
public static void main(String[] args) {
/* 1.打印一个矩形
*****
*****
*****
*****
*****
*/ for(int i = 1;i <= 5;i++) { //控制行数
for(int j = 1;j <= 5;j++) { //控制列数
System.out.print("*");
}
System.out.println();//换行
}
/* 2.打印半个金字塔
* //第1层 有 1个*
** //第2层 有 2个*
*** //第3层 有 3个*
**** //第4层 有 4个*
***** //第5层 有 5个*
*/ for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++){
System.out.print("*");
}
System.out.println();
}
/* 3. 打印整个金字塔
* //第1层 有 1个* 2 * 1 -1 有4=(总层数-1)个空格
*** //第2层 有 3个* 2 * 2 -1 有3=(总层数-2)个空格
***** //第3层 有 5个* 2 * 3 -1 有2=(总层数-3)个空格
******* //第4层 有 7个* 2 * 4 -1 有1=(总层数-4)个空格
********* //第5层 有 9个* 2 * 5 -1 有0=(总层数-5)个空格
*/ for(int i = 1;i <= 5;i++){
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for(int k = 1; k <= 5 - i; k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j = 1;j <= 2 * i - 1;j++){
System.out.print("*");
}
System.out.println();
}
/* 4. 打印空心的金字塔 [最难的]
* //第1层 有 1个* 当前行的第一个位置是*,最后一个位置也是*
* * //第2层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
* * //第3层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
* * //第4层 有 2个* 当前行的第一个位置是*,最后一个位置也是*
********* //第5层 有 9个* 全部输出*
*/ for(int i = 1; i <= 5; i++) { //i 表示层数
//在输出*之前,还有输出 对应空格 = 总层数-当前层
for(int k = 1; k <= 5 - i; k++ ) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j = 1;j <= 2 * i - 1;j++) {
//当前行的第一个位置是*,最后一个位置也是*, 最后一层全部 *
if(j == 1 || j == 2 * i - 1 || i == 5) {
System.out.print("*");
} else { //其他情况输出空格
System.out.print(" ");
}
}
System.out.println("");
}
//***************其他情况***************
/* *****
****
***
**
*
*/ for(int i = 1;i <= 5;i++){
for(int j = 1;j <= 6-i;j++){
System.out.print("*");
}
System.out.println();
}
/* *
**
***
****
*****
****
***
**
*
*/ for(int i = 1;i <= 5;i++){
for(int j = 1;j <= i;j++){
System.out.print("*");
}
System.out.println();
}
for(int i = 1;i <= 4;i++){
for(int j = 1;j <= 5-i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
物竞天择,适者生存,加油吧 !!!