打印一颗圣诞树
圣诞节临时起意,
用java写了一个可以打印一个按比例缩放的圣诞树代码
如果圣诞树高度设太大了,比例就不太像,还没想到啥好办法。
public class ChristmasTree {
public static void Create(int n) {
for (int i = 1; i <= n; i++) {//打印圣诞树树顶
for (int k = n - i; k >= 1; k--) {
System.out.print(" ");//为了与树叶对齐,空格三个为一组
}
for (int x = 0; x < 2 * n; x++)// 预留空格,给下面扩大的树叶腾空间
System.out.print(" ");
for (int j = 1; j <= 2 * i - 1; j++)
System.out.print("口");//用口代表树叶
System.out.println();
}
int temp = 2 * n - 3;
for (int i = 0; i < n; i++) {
temp = Leaf(n, temp) - 2;//迭代打印圣诞树中间的梯形
}
Trunk(n);//打印树干
}
public static int Leaf(int n, int h) {
int blank = 3 * n - 1 - h / 2;// 预留空格部分为2*n
int leaf = h;
for (int i = 0; i < 3; i++) {
String s = "";
for (int j = 0; j < blank; j++) {
s += " ";
}
for (int x = 0; x < leaf; x++) {
s += "口";
}
System.out.println(s);
blank -= 1;
leaf += 2;
}
return leaf - 2;
}
public static void Trunk(int n) {
int blank = (5 * n - 1) / 2;
int h = n * 2;
for (int i = 0; i < h; i++) {
for (int x = 0; x < blank; x++) {// 基本空格
System.out.print(" ");
}
System.out.print(" ");//树干调整
if (n % 2 == 0)
n += 1;
for (int k = 0; k < n; k++) {
System.out.print("口");
}
System.out.println();
}
}
}
下面是主方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入圣诞树的高度(高度大于等于3)");
int n = sc.nextInt();
ChristmasTree.Create(n);
sc.close();
}
}
运行效果截图