如何打印出空心金字塔?
* * * * * * * *********
化繁为简
- 打印出一个矩形
***** ***** ***** ***** *****
for(int i = 1; i <= 5; i++) {
System.out.println("*****");
}
- 打印出金字塔
* //第1层2*当前层数-1个*,总层数-当前层数个空格 *** //第2层2*当前层数-1个*,总层数-当前层数个空格 ***** //第3层2*当前层数-1个*,总层数-当前层数个空格 ******* //第4层2*当前层数-1个*,总层数-当前层数个空格 ********* //第5层2*当前层数-1个*,总层数-当前层数个空格
for(int i = 1; i <= 5; i++) {//i表层数
for(int k = 1; k <= 5 - i; k++) {//k表空格数
System.out.print(" ");
}
for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
System.out.print("*");
}
System.out.println("");
}
- 打印出空心金字塔
* //第1层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格 * * //第2层在2*当前层数-1个位置中第一个位置和最后一 个位置为*其他为空格,总层数-当前层数个空格 * * //第3层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格 * * //第4层在2*当前层数-1个位置中第一个位置和最后一个位置为*其他为空格,总层数-当前层数个空格 ********* //第5层在2*当前层数-1个位置中全部为*,总层数-当前层数个空格
for(int i = 1; i <= 5; i++) {//i表层数
for(int k = 1; k <= 5 - i; k++) {//k表空格数
System.out.print(" ");
}
for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
if(j == 1 || j == i * 2 - 1 || i == 5) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
先死后活
- 把常量用变量替代来方便需求的变化,提高方法的变通
- 可以用int totalLevel = 5;表示总层数;如果想要更大的空心金字塔只需要修改 totalLevel 变量的值就可以实现
如打印这样的一个金字塔
只需要将 totalLevel 修改为相应层数就行了
int totalLevel = 15;
for(int i = 1; i <= totalLevel; i++) {//i表层数
for(int k = 1; k <= totalLevel - i; k++) {//k表空格数
System.out.print(" ");
}
for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
if(j == 1 || j == i * 2 - 1 || i == totalLevel) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
总代码:
public class Star {
//编写方法
public static void main(String[] args) {
/*
打印出空心金字塔
*
* *
* *
* *
*********
*/
int totalLevel = 5;//表示总层数
for(int i = 1; i <= totalLevel; i++) {//i表层数
for(int k = 1; k <= totalLevel - i; k++) {//k表空格数
System.out.print(" ");
}
for(int j = 1; j <= i * 2 - 1; j++) {//j表*数
if(j == 1 || j == i * 2 - 1 || i == totalLevel) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
}
}
注意:公共类文件名要和类名一致,这里文件应该命名为 Star.java