思路分析:
(1)先打出半个金字塔
import java.util.Scanner;
public class lx{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
for(int i = 1 ; i <= x ; i++) //控制金字塔的层数
{
for(int j = 1 ; j <= i ; j++) //控制每层的*个数
{
System.out.print("*");
}
System.out.println(""); //换行
}
}
}
(2)打印出完整的金字塔
通过观察我们可以知道,每层 * 的个数为 2*层数 - 1,要注意的是我们输出 * 之前还要输出空格,而空格数应该为 总金字塔的层数-所在层数,所以我们的代码可以写成
for(int i = 1 ; i <= x ; i++) //控制金字塔的层数
{
for(int kg = 1 ; kg <= x - i ; kg++)
System.out.print(" "); //输出每层的空格
for(int j = 1 ; j <= 2*i-1 ; j++) //控制每层的*个数
{
System.out.print("*");
}
System.out.println(""); //换行
}
(3)打印空心金字塔
在这里我们只需要判断是否是当前行的第一个位置或者是最后一个位置,又或者是最后一层,是的话就输出 *,不是的话就输出空格,代码如下
for(int i = 1 ; i <= x ; i++)
{
for(int k = 1 ; k <= x - i ; k++)
{
System.out.print(" ");
}
for(int j = 1 ; j <= 2*i -1 ; j++)
{
if(j == 1 || j == 2 * i - 1 || i == x)
System.out.print("*"); //判断是否是第一个位置或者是最后一个位置,或者是最后一层
else
System.out.print(" ");
}
System.out.println("");
}