基础版圣诞树:纯字符图案
public class BasicChristmasTree { public static void main(String[] args) { int height = 5; // 树冠高度(层数) // 打印树冠 for (int i = 0; i < height; i++) { // 打印空格(居中) for (int j = 0; j < height - i - 1; j++) { System.out.print(" "); } // 打印星号(每层星号数 = 2*i + 1) for (int k = 0; k < 2 * i + 1; k++) { System.out.print("*"); } System.out.println(); // 换行 } // 打印树干 for (int i = 0; i < height - 2; i++) { System.out.print(" "); // 居中空格 } System.out.println("|||"); // 树干符号 } }
输出效果:
代码解析:
- 树冠部分:
- 外层循环
i
控制层数(高度)。 - 第一个内层循环打印空格(数量为
height - i - 1
),实现居中效果。 - 第二个内层循环打印星号(数量为
2*i + 1
),形成等腰三角形。
- 外层循环
- 树干部分:
- 空格数量为
height - 2
确保树干居中。 - 用 模拟树干。
- 空格数量为
进阶版圣诞树:彩色装饰+随机点缀
public class AdvancedChristmasTree { public static void main(String[] args) { int height = 7; String[] colors = {"u001B[31m", "u001B[33m", "u001B[35m"}; // 红、黄、紫ANSI颜色码 String reset = "u001B[0m"; // 重置颜色 // 打印树冠(带随机装饰) for (int i = 0; i < height; i++) { for (int j = 0; j < height - i - 1; j++) { System.out.print(" "); } for (int k = 0; k < 2 * i + 1; k++) { if (Math.random() > 0.8) { // 20%概率打印彩色装饰 String color = colors[(int)(Math.random() * colors.length)]; System.out.print(color + "@" + reset); } else { System.out.print("*"); } } System.out.println(); } // 打印树干(棕色) String brown = "u001B[33m"; // 棕色(部分终端显示为黄色) for (int i = 0; i < 2; i++) { for (int j = 0; j < height - 2; j++) { System.out.print(" "); } System.out.println(brown + "|||" + reset); } } }
输出效果(支持ANSI的终端):
进阶功能解析:
- 随机装饰:
- 用
Math.random() > 0.8
控制20%的概率在随机位置打印彩色装饰符号 。 - 从预定义颜色数组
colors
中随机选择颜色(ANSI转义码)。
- 用
- 彩色输出:
u001B[31m
代表红色,u001B[0m
重置颜色。- 树干使用棕色(
u001B[33m
)。
- 树干加粗:
循环打印两次树干,增强视觉效果。
注意事项
- 颜色兼容性:
- ANSI颜色在Windows CMD默认禁用,需开启或使用支持终端(如VS Code、IntelliJ IDEA、Linux/macOS终端)。
- 若无法显示颜色,移除ANSI代码即可。
- 自定义扩展建议:
- 添加闪烁效果:用
u001B[5m
+ 符号 +u001B[0m
。 - 增加雪花背景:在空格位置随机打印 或 。
- 用户交互:通过
Scanner
输入树的高度和装饰密度。
- 添加闪烁效果:用
- 算法优化:
- 使用
StringBuilder
替代多次System.out.print
提升性能(尤其大尺寸树)。
- 使用
通过Java实现圣诞树,你已实践了:
- 嵌套循环:控制空间结构与字符分布。
- 随机数应用:
Math.random()
生成装饰图案。 - ANSI转义码:控制台动态着色(需环境支持)。
尝试修改参数(如高度、装饰概率)或添加新功能(如礼物盒、祝福语),能进一步巩固编程思维,完整代码可直接复制运行,动手调整是掌握的关键!
引用说明:
- ANSI颜色标准:基于ECMA-48规范。
- Java随机数生成:Oracle官方文档Math.random()。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/23693.html