-
爱心图案实现代码
代码
public class HeartPattern {
public static void main(String[] args) {
int size = 10; // 控制爱心的大小
// 打印爱心上半部分
for (int i = size / 2; i <= size; i += 2) {
// 打印左边空格
for (int j = 1; j < size - i; j += 2) {
System.out.print(" ");
}
// 打印左边爱心
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
// 打印中间空格
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
// 打印右边爱心
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
// 打印爱心下半部分
for (int i = size; i >= 1; i--) {
// 打印左边空格
for (int j = i; j < size; j++) {
System.out.print(" ");
}
// 打印爱心底部
for (int j = 1; j <= (i * 2) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
-
知识点讲解
1. 嵌套循环结构
- 外层循环控制行数
- 内层循环控制每行的字符打印
for (int i = size / 2; i <= size; i += 2) {
for (int j = 1; j < size - i; j += 2) {
System.out.print(" ");
}
// ...
}
2. 数学关系计算
- 使用数学关系确定爱心形状的边界
- 通过变量`i`和`j`的关系控制星号(*)和空格的位置
3. 对称性处理
- 爱心是对称图形,代码中左右两部分对称处理
//左边爱心
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
// 中间空格
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
// 右边爱心
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
```
4. 分步打印
- 将爱心分为上下两部分分别打印
- 上半部分形成爱心的两个半圆
- 下半部分形成爱心的尖角
5. 控制台输出
- 使用`System.out.print()`和`System.out.println()`控制输出
- `print()`不换行,`println()`换行
代码优化版(增加颜色和动态大小)
```java
public class ColoredHeart {
public static void main(String[] args) {
// ANSI颜色代码
final String RED = "\u001B[31m";
final String RESET = "\u001B[0m";
// 动态调整爱心大小
for (int size = 6; size <= 10; size += 2) {
System.out.println("\n大小 " + size + " 的爱心:");
// 上半部分
for (int i = size / 2; i <= size; i += 2) {
for (int j = 1; j < size - i; j += 2) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print(RED + "*" + RESET);
}
for (int j = 1; j <= size - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print(RED + "*" + RESET);
}
System.out.println();
}
// 下半部分
for (int i = size; i >= 1; i--) {
for (int j = i; j < size; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (i * 2) - 1; j++) {
System.out.print(RED + "*" + RESET);
}
System.out.println();
}
}
}
}
知识点
1. ANSI颜色代码
- 使用ANSI转义序列改变控制台文本颜色
- `\u001B[31m`设置为红色
- `\u001B[0m`重置颜色
2. 动态大小调整
- 使用外层循环生成不同大小的爱心
- 演示了如何通过改变一个参数影响整个图形
3. 常量使用
- 使用`final`定义颜色常量,提高代码可读性
练习建议
1. 尝试修改代码生成不同形状的图案
2. 添加更多颜色变化
3. 实现一个方法,接收大小参数返回爱心字符串
4. 尝试用其他字符(如❤️)代替星号