import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int h = in.nextInt(); int row = h * 4; /** i为第几行, treeNums为第几次三行 高度 4 1 8 2 12 3 第一层,每过3 (i - 3 * treeNums) == 1 " * " 第二层,每过3 (i - 3 * treeNums) == 2 " * * " 出现" * * "的层 2 1 2 5 2 2 5 8 3 每是3的倍数输出第三层 i % 3 == 0 "* * *" treeNums++ 每层左边需要的空格 (h - treeNums - 1) * 3 当treeNums等于h时,输出杆子 最大宽 maxWidth 6 12 18 左边宽(也就是左边空格数) maxWidth / 2 - 1 2 5 8 */ int treeNums = 0; for (int i = 1; i <= row; i++) { // 杆子 if (treeNums == h) { int maxWidth = treeNums * 6; int leftWidth = maxWidth / 2 - 1; for (int j = 0; j < h; j++) { for (int k = 0; k < leftWidth; k++) System.out.print(" "); System.out.println("*"); } break; } // " * "输出 if (i - 3 * treeNums == 1) { // 左边空格 int leftEmpty = (h - treeNums - 1) * 3; for (int j = 0; j < leftEmpty; j++) { System.out.print(" "); } for (int j = 0; j <= treeNums; j++) { System.out.print(" * "); } System.out.println(); } // " * * "输出 if (i - 3 * treeNums == 2) { // 左边空格 int leftEmpty = (h - treeNums - 1) * 3; for (int j = 0; j < leftEmpty; j++) { System.out.print(" "); } for (int j = 0; j <= treeNums; j++) { System.out.print(" * * "); } System.out.println(); } // "* * *"输出 if (i % 3 == 0) { // 左边空格 int leftEmpty = (h - treeNums - 1) * 3; for (int j = 0; j < leftEmpty; j++) { System.out.print(" "); } for (int j = 0; j <= treeNums; j++) { System.out.print("* * * "); } treeNums++; System.out.println(); } } } }