活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Eclipse编程教程从零开始学会输出各种创意图案包括星形心形和几何图形适合初学者快速掌握代码输出技巧

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-4 20:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1. 简介

欢迎来到Eclipse编程教程!本文将带您从零开始,学习如何使用Eclipse IDE编写代码,输出各种创意图案,包括星形、心形和几何图形。无论您是编程新手还是希望提高技能的开发者,本教程都将帮助您快速掌握代码输出技巧,创造出令人印象深刻的图案。

2. Eclipse IDE简介与安装

2.1 什么是Eclipse?

Eclipse是一个开源的集成开发环境(IDE),广泛用于Java应用程序的开发,但通过插件也可支持其他编程语言如C/C++、Python等。它提供了代码编辑、编译、调试和部署的一站式解决方案。

2.2 安装Eclipse

1. 访问Eclipse官方网站:https://www.eclipse.org/
2. 下载适合您操作系统的Eclipse IDE for Java Developers版本
3. 按照安装向导完成安装过程
4. 启动Eclipse,选择工作空间(Workspace)路径

2.3 创建第一个Java项目

1. 打开Eclipse,点击”File” > “New” > “Java Project”
2. 输入项目名称,例如”CreativePatterns”
3. 点击”Finish”完成项目创建
4. 右键点击项目中的”src”文件夹,选择”New” > “Class”
5. 输入类名,例如”PatternPrinter”,并勾选”public static void main(String[] args)“选项
6. 点击”Finish”创建类

现在,您已经准备好开始编写代码了!

3. Java编程基础

在开始创建图案之前,我们需要了解一些Java基础知识。

3.1 基本语法

Java程序由类组成,类中包含方法。我们的代码将主要写在main方法中,这是程序的入口点。
  1. public class PatternPrinter {
  2.     public static void main(String[] args) {
  3.         // 代码将写在这里
  4.     }
  5. }
复制代码

3.2 输出语句

在Java中,我们使用System.out.println()来输出内容并换行,使用System.out.print()来输出内容但不换行。
  1. System.out.println("Hello, World!"); // 输出并换行
  2. System.out.print("Hello, "); // 输出但不换行
  3. System.out.print("World!"); // 继续在同一行输出
复制代码

3.3 循环结构

循环是创建图案的关键,我们将主要使用for循环。
  1. // 基本for循环
  2. for (int i = 0; i < 5; i++) {
  3.     System.out.println("这是第 " + (i + 1) + " 次循环");
  4. }
  5. // 嵌套for循环
  6. for (int i = 0; i < 3; i++) {
  7.     for (int j = 0; j < 3; j++) {
  8.         System.out.print("* ");
  9.     }
  10.     System.out.println(); // 换行
  11. }
复制代码

3.4 条件语句

条件语句帮助我们根据不同情况输出不同的内容。
  1. int x = 10;
  2. if (x > 5) {
  3.     System.out.println("x大于5");
  4. } else {
  5.     System.out.println("x小于或等于5");
  6. }
复制代码

4. 简单图案输出

让我们从一些简单的图案开始,逐步掌握代码输出技巧。

4.1 矩形图案
  1. public class RectanglePattern {
  2.     public static void main(String[] args) {
  3.         int rows = 5;
  4.         int cols = 10;
  5.         
  6.         // 外层循环控制行数
  7.         for (int i = 0; i < rows; i++) {
  8.             // 内层循环控制每行的星号数量
  9.             for (int j = 0; j < cols; j++) {
  10.                 System.out.print("* ");
  11.             }
  12.             // 每行结束后换行
  13.             System.out.println();
  14.         }
  15.     }
  16. }
复制代码

输出结果:
  1. * * * * * * * * * *
  2. * * * * * * * * * *
  3. * * * * * * * * * *
  4. * * * * * * * * * *
  5. * * * * * * * * * *
复制代码

4.2 三角形图案
  1. public class TrianglePattern {
  2.     public static void main(String[] args) {
  3.         int rows = 5;
  4.         
  5.         // 外层循环控制行数
  6.         for (int i = 1; i <= rows; i++) {
  7.             // 内层循环控制每行的星号数量
  8.             for (int j = 1; j <= i; j++) {
  9.                 System.out.print("* ");
  10.             }
  11.             // 每行结束后换行
  12.             System.out.println();
  13.         }
  14.     }
  15. }
复制代码

输出结果:
  1. *
  2. * *
  3. * * *
  4. * * * *
  5. * * * * *
复制代码

4.3 倒三角形图案
  1. public class InvertedTrianglePattern {
  2.     public static void main(String[] args) {
  3.         int rows = 5;
  4.         
  5.         // 外层循环控制行数
  6.         for (int i = rows; i >= 1; i--) {
  7.             // 内层循环控制每行的星号数量
  8.             for (int j = 1; j <= i; j++) {
  9.                 System.out.print("* ");
  10.             }
  11.             // 每行结束后换行
  12.             System.out.println();
  13.         }
  14.     }
  15. }
复制代码

输出结果:
  1. * * * * *
  2. * * * *
  3. * * *
  4. * *
  5. *
复制代码

5. 星形图案输出

现在,让我们学习如何输出各种星形图案。

5.1 简单星形
  1. public class SimpleStar {
  2.     public static void main(String[] args) {
  3.         int size = 5;
  4.         
  5.         // 上半部分
  6.         for (int i = 1; i <= size; i++) {
  7.             // 打印空格
  8.             for (int j = 1; j <= size - i; j++) {
  9.                 System.out.print(" ");
  10.             }
  11.             // 打印星号
  12.             for (int j = 1; j <= 2 * i - 1; j++) {
  13.                 System.out.print("*");
  14.             }
  15.             System.out.println();
  16.         }
  17.         
  18.         // 下半部分
  19.         for (int i = size - 1; i >= 1; i--) {
  20.             // 打印空格
  21.             for (int j = 1; j <= size - i; j++) {
  22.                 System.out.print(" ");
  23.             }
  24.             // 打印星号
  25.             for (int j = 1; j <= 2 * i - 1; j++) {
  26.                 System.out.print("*");
  27.             }
  28.             System.out.println();
  29.         }
  30.     }
  31. }
复制代码

输出结果:
  1. *
  2.    ***
  3.   *****
  4. *******
  5. *********
  6. *******
  7.   *****
  8.    ***
  9.     *
复制代码

5.2 复杂星形
  1. public class ComplexStar {
  2.     public static void main(String[] args) {
  3.         int size = 9;
  4.         int center = size / 2;
  5.         
  6.         for (int i = 0; i < size; i++) {
  7.             for (int j = 0; j < size; j++) {
  8.                 // 判断是否在星形的线条上
  9.                 if (i == center || j == center ||
  10.                     (i <= center && i + j == center) ||
  11.                     (i <= center && j - i == center) ||
  12.                     (i >= center && i - j == center) ||
  13.                     (i >= center && i + j == size + center - 1)) {
  14.                     System.out.print("*");
  15.                 } else {
  16.                     System.out.print(" ");
  17.                 }
  18.             }
  19.             System.out.println();
  20.         }
  21.     }
  22. }
复制代码

输出结果:
  1. *   
  2.    * *   
  3.   *   *  
  4. *     *
  5. *       *
  6. *     *
  7.   *   *  
  8.    * *   
  9.     *
复制代码

5.3 五角星
  1. public class FivePointedStar {
  2.     public static void main(String[] args) {
  3.         int size = 10;
  4.         
  5.         for (int i = 0; i < size; i++) {
  6.             for (int j = 0; j < size; j++) {
  7.                 // 五角星的数学公式
  8.                 double x = (j - size/2.0) / (size/2.0);
  9.                 double y = (i - size/2.0) / (size/2.0);
  10.                
  11.                 // 五角星的极坐标方程
  12.                 double r = Math.sqrt(x*x + y*y);
  13.                 double theta = Math.atan2(y, x);
  14.                
  15.                 // 五角星的形状方程
  16.                 double star = Math.cos(5 * theta / 2) - 0.5;
  17.                
  18.                 if (r < star) {
  19.                     System.out.print("*");
  20.                 } else {
  21.                     System.out.print(" ");
  22.                 }
  23.             }
  24.             System.out.println();
  25.         }
  26.     }
  27. }
复制代码

输出结果:
  1. *     
  2.     ***   
  3.    *****   
  4.   *******  
  5. *********
  6. ***********
  7. *********
  8.   *******  
  9.    *****   
  10.     ***   
  11.      *
复制代码

6. 心形图案输出

心形图案是表达情感的绝佳方式,让我们学习如何用代码输出心形。

6.1 简单心形
  1. public class SimpleHeart {
  2.     public static void main(String[] args) {
  3.         int size = 6;
  4.         
  5.         for (int i = size / 2; i <= size; i += 2) {
  6.             // 打印左上部分的空间
  7.             for (int j = 1; j < size - i; j += 2) {
  8.                 System.out.print(" ");
  9.             }
  10.             
  11.             // 打印左上部分的星号
  12.             for (int j = 1; j <= i; j++) {
  13.                 System.out.print("*");
  14.             }
  15.             
  16.             // 打印右上部分的空间
  17.             for (int j = 1; j <= size - i; j++) {
  18.                 System.out.print(" ");
  19.             }
  20.             
  21.             // 打印右上部分的星号
  22.             for (int j = 1; j <= i; j++) {
  23.                 System.out.print("*");
  24.             }
  25.             
  26.             System.out.println();
  27.         }
  28.         
  29.         // 下半部分
  30.         for (int i = size; i >= 1; i--) {
  31.             // 打印空间
  32.             for (int j = i; j < size; j++) {
  33.                 System.out.print(" ");
  34.             }
  35.             
  36.             // 打印星号
  37.             for (int j = 1; j <= (i * 2) - 1; j++) {
  38.                 System.out.print("*");
  39.             }
  40.             
  41.             System.out.println();
  42.         }
  43.     }
  44. }
复制代码

输出结果:
  1. *****     *****  
  2. *******   *******
  3. ********* *********
  4. *******************
  5. *****************
  6.   ***************
  7.    *************
  8.     ***********
  9.      *********
  10.       *******
  11.        *****
  12.         ***
  13.          *
复制代码

6.2 数学心形
  1. public class MathematicalHeart {
  2.     public static void main(String[] args) {
  3.         int size = 15;
  4.         
  5.         for (int i = 0; i < size; i++) {
  6.             for (int j = 0; j < size; j++) {
  7.                 // 心形的数学公式
  8.                 double x = (j - size/2.0) / (size/6.0);
  9.                 double y = -(i - size/2.0) / (size/6.0);
  10.                
  11.                 // 心形方程
  12.                 double heart = Math.pow(x*x + y*y - 1, 3) - x*x*y*y*y;
  13.                
  14.                 if (heart <= 0) {
  15.                     System.out.print("*");
  16.                 } else {
  17.                     System.out.print(" ");
  18.                 }
  19.             }
  20.             System.out.println();
  21.         }
  22.     }
  23. }
复制代码

输出结果:
  1. ***     ***      
  2.      ******  ******     
  3.     ***************   
  4.    *****************   
  5.   *******************  
  6. ********************  
  7. *********************
  8. ********************  
  9. ********************  
  10.   *******************  
  11.    *****************   
  12.     ***************   
  13.      *************     
  14.       ***********      
  15.        *********      
  16.         *******        
  17.          *****         
  18.           ***         
  19.            *
复制代码

6.3 动态心形
  1. public class DynamicHeart {
  2.     public static void main(String[] args) {
  3.         int size = 10;
  4.         String[] messages = {"I", "LOVE", "YOU", "JAVA"};
  5.         int messageIndex = 0;
  6.         
  7.         for (int i = size / 2; i <= size; i += 2) {
  8.             // 打印左上部分的空间
  9.             for (int j = 1; j < size - i; j += 2) {
  10.                 System.out.print(" ");
  11.             }
  12.             
  13.             // 打印左上部分的星号
  14.             for (int j = 1; j <= i; j++) {
  15.                 System.out.print("*");
  16.             }
  17.             
  18.             // 打印右上部分的空间
  19.             for (int j = 1; j <= size - i; j++) {
  20.                 System.out.print(" ");
  21.             }
  22.             
  23.             // 打印右上部分的星号
  24.             for (int j = 1; j <= i; j++) {
  25.                 System.out.print("*");
  26.             }
  27.             
  28.             System.out.println();
  29.         }
  30.         
  31.         // 下半部分
  32.         for (int i = size; i >= 1; i--) {
  33.             // 打印空间
  34.             for (int j = i; j < size; j++) {
  35.                 System.out.print(" ");
  36.             }
  37.             
  38.             // 打印星号或消息
  39.             for (int j = 1; j <= (i * 2) - 1; j++) {
  40.                 // 在特定行插入消息
  41.                 if (i == size || i == size - 1 || i == size - 2 || i == size - 3) {
  42.                     if (j == i) {
  43.                         System.out.print(messages[messageIndex]);
  44.                         j += messages[messageIndex].length() - 1;
  45.                         messageIndex++;
  46.                         continue;
  47.                     }
  48.                 }
  49.                 System.out.print("*");
  50.             }
  51.             
  52.             System.out.println();
  53.         }
  54.     }
  55. }
复制代码

输出结果:
  1. *****     *****  
  2. *******   *******
  3. ********* *********
  4. *******************
  5. ****I***********
  6. ******LOVE******  
  7. ******YOU******  
  8. ******JAVA*****  
  9.      *********     
  10.       *******      
  11.        *****      
  12.         ***        
  13.          *
复制代码

7. 几何图形输出

几何图形是编程学习中的基础图案,让我们探索如何输出各种几何图形。

7.1 菱形图案
  1. public class DiamondPattern {
  2.     public static void main(String[] args) {
  3.         int size = 5;
  4.         
  5.         // 上半部分
  6.         for (int i = 1; i <= size; i++) {
  7.             // 打印空格
  8.             for (int j = 1; j <= size - i; j++) {
  9.                 System.out.print(" ");
  10.             }
  11.             // 打印星号
  12.             for (int j = 1; j <= 2 * i - 1; j++) {
  13.                 System.out.print("*");
  14.             }
  15.             System.out.println();
  16.         }
  17.         
  18.         // 下半部分
  19.         for (int i = size - 1; i >= 1; i--) {
  20.             // 打印空格
  21.             for (int j = 1; j <= size - i; j++) {
  22.                 System.out.print(" ");
  23.             }
  24.             // 打印星号
  25.             for (int j = 1; j <= 2 * i - 1; j++) {
  26.                 System.out.print("*");
  27.             }
  28.             System.out.println();
  29.         }
  30.     }
  31. }
复制代码

输出结果:
  1. *
  2.    ***
  3.   *****
  4. *******
  5. *********
  6. *******
  7.   *****
  8.    ***
  9.     *
复制代码

7.2 平行四边形
  1. public class ParallelogramPattern {
  2.     public static void main(String[] args) {
  3.         int rows = 5;
  4.         int cols = 8;
  5.         
  6.         for (int i = 1; i <= rows; i++) {
  7.             // 打印空格形成斜边
  8.             for (int j = 1; j <= i - 1; j++) {
  9.                 System.out.print(" ");
  10.             }
  11.             
  12.             // 打印星号
  13.             for (int j = 1; j <= cols; j++) {
  14.                 System.out.print("*");
  15.             }
  16.             
  17.             System.out.println();
  18.         }
  19.     }
  20. }
复制代码

输出结果:
  1. ********
  2. *********
  3.   **********
  4.    ***********
  5.     ************
复制代码

7.3 梯形图案
  1. public class TrapezoidPattern {
  2.     public static void main(String[] args) {
  3.         int top = 5;
  4.         int bottom = 10;
  5.         int height = 6;
  6.         
  7.         for (int i = 1; i <= height; i++) {
  8.             // 计算当前行的星号数量
  9.             int stars = top + (bottom - top) * (i - 1) / (height - 1);
  10.             
  11.             // 打印空格
  12.             for (int j = 1; j <= (bottom - stars) / 2; j++) {
  13.                 System.out.print(" ");
  14.             }
  15.             
  16.             // 打印星号
  17.             for (int j = 1; j <= stars; j++) {
  18.                 System.out.print("*");
  19.             }
  20.             
  21.             System.out.println();
  22.         }
  23.     }
  24. }
复制代码

输出结果:
  1. *****
  2.   ******  
  3.   *******
  4. ********
  5. *********
  6. **********
复制代码

7.4 六边形图案
  1. public class HexagonPattern {
  2.     public static void main(String[] args) {
  3.         int size = 5;
  4.         
  5.         // 上半部分
  6.         for (int i = 1; i <= size; i++) {
  7.             // 打印空格
  8.             for (int j = 1; j <= size - i; j++) {
  9.                 System.out.print(" ");
  10.             }
  11.             
  12.             // 打印星号
  13.             for (int j = 1; j <= size + 2 * (i - 1); j++) {
  14.                 System.out.print("*");
  15.             }
  16.             
  17.             System.out.println();
  18.         }
  19.         
  20.         // 下半部分
  21.         for (int i = size - 1; i >= 1; i--) {
  22.             // 打印空格
  23.             for (int j = 1; j <= size - i; j++) {
  24.                 System.out.print(" ");
  25.             }
  26.             
  27.             // 打印星号
  28.             for (int j = 1; j <= size + 2 * (i - 1); j++) {
  29.                 System.out.print("*");
  30.             }
  31.             
  32.             System.out.println();
  33.         }
  34.     }
  35. }
复制代码

输出结果:
  1. *
  2.    ***
  3.   *****
  4. *******
  5. *********
  6. *******
  7.   *****
  8.    ***
  9.     *
复制代码

8. 进阶技巧与创意图案设计

现在我们已经掌握了基本的图案输出技巧,让我们探索一些进阶技巧,以创建更复杂、更有创意的图案。

8.1 使用方法封装图案逻辑

将图案生成逻辑封装在方法中,可以提高代码的可重用性和可读性。
  1. public class PatternMethods {
  2.     public static void main(String[] args) {
  3.         printDiamond(5);
  4.         printHeart(6);
  5.         printStar(7);
  6.     }
  7.    
  8.     // 打印菱形
  9.     public static void printDiamond(int size) {
  10.         System.out.println("菱形图案:");
  11.         // 上半部分
  12.         for (int i = 1; i <= size; i++) {
  13.             for (int j = 1; j <= size - i; j++) {
  14.                 System.out.print(" ");
  15.             }
  16.             for (int j = 1; j <= 2 * i - 1; j++) {
  17.                 System.out.print("*");
  18.             }
  19.             System.out.println();
  20.         }
  21.         
  22.         // 下半部分
  23.         for (int i = size - 1; i >= 1; i--) {
  24.             for (int j = 1; j <= size - i; j++) {
  25.                 System.out.print(" ");
  26.             }
  27.             for (int j = 1; j <= 2 * i - 1; j++) {
  28.                 System.out.print("*");
  29.             }
  30.             System.out.println();
  31.         }
  32.         System.out.println();
  33.     }
  34.    
  35.     // 打印心形
  36.     public static void printHeart(int size) {
  37.         System.out.println("心形图案:");
  38.         for (int i = size / 2; i <= size; i += 2) {
  39.             for (int j = 1; j < size - i; j += 2) {
  40.                 System.out.print(" ");
  41.             }
  42.             for (int j = 1; j <= i; j++) {
  43.                 System.out.print("*");
  44.             }
  45.             for (int j = 1; j <= size - i; j++) {
  46.                 System.out.print(" ");
  47.             }
  48.             for (int j = 1; j <= i; j++) {
  49.                 System.out.print("*");
  50.             }
  51.             System.out.println();
  52.         }
  53.         
  54.         for (int i = size; i >= 1; i--) {
  55.             for (int j = i; j < size; j++) {
  56.                 System.out.print(" ");
  57.             }
  58.             for (int j = 1; j <= (i * 2) - 1; j++) {
  59.                 System.out.print("*");
  60.             }
  61.             System.out.println();
  62.         }
  63.         System.out.println();
  64.     }
  65.    
  66.     // 打印星形
  67.     public static void printStar(int size) {
  68.         System.out.println("星形图案:");
  69.         int center = size / 2;
  70.         
  71.         for (int i = 0; i < size; i++) {
  72.             for (int j = 0; j < size; j++) {
  73.                 if (i == center || j == center ||
  74.                     (i <= center && i + j == center) ||
  75.                     (i <= center && j - i == center) ||
  76.                     (i >= center && i - j == center) ||
  77.                     (i >= center && i + j == size + center - 1)) {
  78.                     System.out.print("*");
  79.                 } else {
  80.                     System.out.print(" ");
  81.                 }
  82.             }
  83.             System.out.println();
  84.         }
  85.         System.out.println();
  86.     }
  87. }
复制代码

8.2 使用字符数组构建图案

使用字符数组可以更灵活地构建复杂图案。
  1. public class ArrayPattern {
  2.     public static void main(String[] args) {
  3.         int size = 15;
  4.         char[][] grid = new char[size][size];
  5.         
  6.         // 初始化网格
  7.         for (int i = 0; i < size; i++) {
  8.             for (int j = 0; j < size; j++) {
  9.                 grid[i][j] = ' ';
  10.             }
  11.         }
  12.         
  13.         // 在网格上绘制图案
  14.         drawSmileyFace(grid, size);
  15.         
  16.         // 打印网格
  17.         for (int i = 0; i < size; i++) {
  18.             for (int j = 0; j < size; j++) {
  19.                 System.out.print(grid[i][j]);
  20.             }
  21.             System.out.println();
  22.         }
  23.     }
  24.    
  25.     public static void drawSmileyFace(char[][] grid, int size) {
  26.         int center = size / 2;
  27.         
  28.         // 画脸
  29.         for (int i = 0; i < size; i++) {
  30.             for (int j = 0; j < size; j++) {
  31.                 double distance = Math.sqrt(Math.pow(i - center, 2) + Math.pow(j - center, 2));
  32.                 if (distance <= center - 1 && distance >= center - 3) {
  33.                     grid[i][j] = '*';
  34.                 }
  35.             }
  36.         }
  37.         
  38.         // 画眼睛
  39.         grid[center - 3][center - 3] = '*';
  40.         grid[center - 3][center + 3] = '*';
  41.         
  42.         // 画嘴巴
  43.         for (int i = center; i < center + 3; i++) {
  44.             for (int j = center - 3; j <= center + 3; j++) {
  45.                 if (Math.pow(i - center - 1, 2) + Math.pow(j - center, 2) <= 9) {
  46.                     grid[i][j] = '*';
  47.                 }
  48.             }
  49.         }
  50.     }
  51. }
复制代码

输出结果:
  1. *****      
  2.      *********     
  3.    *************   
  4.   ***************  
  5. *****************
  6. *******************
  7. *      * *      *
  8. *                 *
  9. *    *******     *
  10. *   **       **   *
  11. *  *           *  *
  12. * *             * *
  13. **               **
  14. *                 *
  15. *               *
  16.   *             *  
  17.    *           *   
  18.     *         *   
  19.      *       *     
  20.       *     *      
  21.        *   *      
  22.         * *        
  23.          *
复制代码

8.3 使用参数化设计

通过参数化设计,可以轻松调整图案的大小、形状和复杂度。
  1. import java.util.Scanner;
  2. public class ParameterizedPattern {
  3.     public static void main(String[] args) {
  4.         Scanner scanner = new Scanner(System.in);
  5.         
  6.         System.out.println("请输入图案类型 (1-菱形, 2-心形, 3-星形): ");
  7.         int patternType = scanner.nextInt();
  8.         
  9.         System.out.println("请输入图案大小: ");
  10.         int size = scanner.nextInt();
  11.         
  12.         System.out.println("请输入填充字符: ");
  13.         char fillChar = scanner.next().charAt(0);
  14.         
  15.         switch (patternType) {
  16.             case 1:
  17.                 printDiamond(size, fillChar);
  18.                 break;
  19.             case 2:
  20.                 printHeart(size, fillChar);
  21.                 break;
  22.             case 3:
  23.                 printStar(size, fillChar);
  24.                 break;
  25.             default:
  26.                 System.out.println("无效的图案类型!");
  27.         }
  28.         
  29.         scanner.close();
  30.     }
  31.    
  32.     public static void printDiamond(int size, char fillChar) {
  33.         // 上半部分
  34.         for (int i = 1; i <= size; i++) {
  35.             for (int j = 1; j <= size - i; j++) {
  36.                 System.out.print(" ");
  37.             }
  38.             for (int j = 1; j <= 2 * i - 1; j++) {
  39.                 System.out.print(fillChar);
  40.             }
  41.             System.out.println();
  42.         }
  43.         
  44.         // 下半部分
  45.         for (int i = size - 1; i >= 1; i--) {
  46.             for (int j = 1; j <= size - i; j++) {
  47.                 System.out.print(" ");
  48.             }
  49.             for (int j = 1; j <= 2 * i - 1; j++) {
  50.                 System.out.print(fillChar);
  51.             }
  52.             System.out.println();
  53.         }
  54.     }
  55.    
  56.     public static void printHeart(int size, char fillChar) {
  57.         for (int i = size / 2; i <= size; i += 2) {
  58.             for (int j = 1; j < size - i; j += 2) {
  59.                 System.out.print(" ");
  60.             }
  61.             for (int j = 1; j <= i; j++) {
  62.                 System.out.print(fillChar);
  63.             }
  64.             for (int j = 1; j <= size - i; j++) {
  65.                 System.out.print(" ");
  66.             }
  67.             for (int j = 1; j <= i; j++) {
  68.                 System.out.print(fillChar);
  69.             }
  70.             System.out.println();
  71.         }
  72.         
  73.         for (int i = size; i >= 1; i--) {
  74.             for (int j = i; j < size; j++) {
  75.                 System.out.print(" ");
  76.             }
  77.             for (int j = 1; j <= (i * 2) - 1; j++) {
  78.                 System.out.print(fillChar);
  79.             }
  80.             System.out.println();
  81.         }
  82.     }
  83.    
  84.     public static void printStar(int size, char fillChar) {
  85.         int center = size / 2;
  86.         
  87.         for (int i = 0; i < size; i++) {
  88.             for (int j = 0; j < size; j++) {
  89.                 if (i == center || j == center ||
  90.                     (i <= center && i + j == center) ||
  91.                     (i <= center && j - i == center) ||
  92.                     (i >= center && i - j == center) ||
  93.                     (i >= center && i + j == size + center - 1)) {
  94.                     System.out.print(fillChar);
  95.                 } else {
  96.                     System.out.print(" ");
  97.                 }
  98.             }
  99.             System.out.println();
  100.         }
  101.     }
  102. }
复制代码

8.4 创建动态图案

通过使用时间延迟和清屏功能,可以创建动态变化的图案效果。
  1. public class DynamicPattern {
  2.     public static void main(String[] args) throws InterruptedException {
  3.         int maxSize = 10;
  4.         
  5.         // 放大效果
  6.         for (int size = 1; size <= maxSize; size++) {
  7.             clearScreen();
  8.             printDiamond(size);
  9.             Thread.sleep(200); // 暂停200毫秒
  10.         }
  11.         
  12.         // 缩小效果
  13.         for (int size = maxSize; size >= 1; size--) {
  14.             clearScreen();
  15.             printHeart(size);
  16.             Thread.sleep(200); // 暂停200毫秒
  17.         }
  18.     }
  19.    
  20.     public static void printDiamond(int size) {
  21.         // 上半部分
  22.         for (int i = 1; i <= size; i++) {
  23.             for (int j = 1; j <= size - i; j++) {
  24.                 System.out.print(" ");
  25.             }
  26.             for (int j = 1; j <= 2 * i - 1; j++) {
  27.                 System.out.print("*");
  28.             }
  29.             System.out.println();
  30.         }
  31.         
  32.         // 下半部分
  33.         for (int i = size - 1; i >= 1; i--) {
  34.             for (int j = 1; j <= size - i; j++) {
  35.                 System.out.print(" ");
  36.             }
  37.             for (int j = 1; j <= 2 * i - 1; j++) {
  38.                 System.out.print("*");
  39.             }
  40.             System.out.println();
  41.         }
  42.     }
  43.    
  44.     public static void printHeart(int size) {
  45.         for (int i = size / 2; i <= size; i += 2) {
  46.             for (int j = 1; j < size - i; j += 2) {
  47.                 System.out.print(" ");
  48.             }
  49.             for (int j = 1; j <= i; j++) {
  50.                 System.out.print("*");
  51.             }
  52.             for (int j = 1; j <= size - i; j++) {
  53.                 System.out.print(" ");
  54.             }
  55.             for (int j = 1; j <= i; j++) {
  56.                 System.out.print("*");
  57.             }
  58.             System.out.println();
  59.         }
  60.         
  61.         for (int i = size; i >= 1; i--) {
  62.             for (int j = i; j < size; j++) {
  63.                 System.out.print(" ");
  64.             }
  65.             for (int j = 1; j <= (i * 2) - 1; j++) {
  66.                 System.out.print("*");
  67.             }
  68.             System.out.println();
  69.         }
  70.     }
  71.    
  72.     public static void clearScreen() {
  73.         try {
  74.             if (System.getProperty("os.name").contains("Windows")) {
  75.                 new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
  76.             } else {
  77.                 System.out.print("\033[H\033[2J");
  78.                 System.out.flush();
  79.             }
  80.         } catch (Exception e) {
  81.             // 如果清屏失败,打印多个换行符
  82.             for (int i = 0; i < 50; i++) {
  83.                 System.out.println();
  84.             }
  85.         }
  86.     }
  87. }
复制代码

9. 实践项目与练习

通过实践项目和练习,巩固所学知识并提高编程技能。

9.1 项目一:图案生成器

创建一个图案生成器程序,允许用户选择图案类型、大小和填充字符,并输出相应的图案。
  1. import java.util.Scanner;
  2. public class PatternGenerator {
  3.     public static void main(String[] args) {
  4.         Scanner scanner = new Scanner(System.in);
  5.         boolean running = true;
  6.         
  7.         while (running) {
  8.             System.out.println("\n===== 图案生成器 =====");
  9.             System.out.println("1. 菱形");
  10.             System.out.println("2. 心形");
  11.             System.out.println("3. 星形");
  12.             System.out.println("4. 三角形");
  13.             System.out.println("5. 矩形");
  14.             System.out.println("6. 六边形");
  15.             System.out.println("0. 退出");
  16.             System.out.print("请选择图案类型: ");
  17.             
  18.             int choice = scanner.nextInt();
  19.             
  20.             if (choice == 0) {
  21.                 running = false;
  22.                 System.out.println("感谢使用图案生成器,再见!");
  23.                 continue;
  24.             }
  25.             
  26.             System.out.print("请输入图案大小: ");
  27.             int size = scanner.nextInt();
  28.             
  29.             System.out.print("请输入填充字符: ");
  30.             char fillChar = scanner.next().charAt(0);
  31.             
  32.             switch (choice) {
  33.                 case 1:
  34.                     printDiamond(size, fillChar);
  35.                     break;
  36.                 case 2:
  37.                     printHeart(size, fillChar);
  38.                     break;
  39.                 case 3:
  40.                     printStar(size, fillChar);
  41.                     break;
  42.                 case 4:
  43.                     printTriangle(size, fillChar);
  44.                     break;
  45.                 case 5:
  46.                     printRectangle(size, size / 2, fillChar);
  47.                     break;
  48.                 case 6:
  49.                     printHexagon(size, fillChar);
  50.                     break;
  51.                 default:
  52.                     System.out.println("无效的选择!");
  53.             }
  54.         }
  55.         
  56.         scanner.close();
  57.     }
  58.    
  59.     // 这里插入之前定义的所有打印图案的方法
  60.     // printDiamond, printHeart, printStar等
  61. }
复制代码

9.2 项目二:ASCII艺术生成器

创建一个ASCII艺术生成器,可以将文本转换为ASCII艺术图案。
  1. import java.util.Scanner;
  2. public class ASCIIArtGenerator {
  3.     public static void main(String[] args) {
  4.         Scanner scanner = new Scanner(System.in);
  5.         
  6.         System.out.println("===== ASCII艺术生成器 =====");
  7.         System.out.print("请输入要转换的文本: ");
  8.         String text = scanner.nextLine().toUpperCase();
  9.         
  10.         System.out.print("请选择字体大小 (1-3): ");
  11.         int fontSize = scanner.nextInt();
  12.         
  13.         System.out.print("请输入填充字符: ");
  14.         char fillChar = scanner.next().charAt(0);
  15.         
  16.         generateASCIIArt(text, fontSize, fillChar);
  17.         
  18.         scanner.close();
  19.     }
  20.    
  21.     public static void generateASCIIArt(String text, int fontSize, char fillChar) {
  22.         // 简化的字母模式
  23.         String[][][] letters = {
  24.             { // A
  25.                 {"  *  ", " * * ", "*****", "*   *", "*   *"}
  26.             },
  27.             { // B
  28.                 {"**** ", "*   *", "**** ", "*   *", "**** "}
  29.             },
  30.             { // C
  31.                 {" *** ", "*   *", "*    ", "*   *", " *** "}
  32.             },
  33.             { // D
  34.                 {"**** ", "*   *", "*   *", "*   *", "**** "}
  35.             },
  36.             { // E
  37.                 {"*****", "*    ", "**** ", "*    ", "*****"}
  38.             },
  39.             { // F
  40.                 {"*****", "*    ", "**** ", "*    ", "*    "}
  41.             },
  42.             { // G
  43.                 {" *** ", "*   *", "*  **", "*   *", " *** "}
  44.             },
  45.             { // H
  46.                 {"*   *", "*   *", "*****", "*   *", "*   *"}
  47.             },
  48.             { // I
  49.                 {"*****", "  *  ", "  *  ", "  *  ", "*****"}
  50.             },
  51.             { // J
  52.                 {"*****", "    *", "    *", "*   *", " *** "}
  53.             },
  54.             { // K
  55.                 {"*   *", "*  * ", "**** ", "*  * ", "*   *"}
  56.             },
  57.             { // L
  58.                 {"*    ", "*    ", "*    ", "*    ", "*****"}
  59.             },
  60.             { // M
  61.                 {"*   *", "** **", "* * *", "*   *", "*   *"}
  62.             },
  63.             { // N
  64.                 {"*   *", "**  *", "* * *", "*  **", "*   *"}
  65.             },
  66.             { // O
  67.                 {" *** ", "*   *", "*   *", "*   *", " *** "}
  68.             },
  69.             { // P
  70.                 {"**** ", "*   *", "**** ", "*    ", "*    "}
  71.             },
  72.             { // Q
  73.                 {" *** ", "*   *", "*   *", "*  **", " ****"}
  74.             },
  75.             { // R
  76.                 {"**** ", "*   *", "**** ", "*  * ", "*   *"}
  77.             },
  78.             { // S
  79.                 {" ****", "*    ", " *** ", "    *", "**** "}
  80.             },
  81.             { // T
  82.                 {"*****", "  *  ", "  *  ", "  *  ", "  *  "}
  83.             },
  84.             { // U
  85.                 {"*   *", "*   *", "*   *", "*   *", " *** "}
  86.             },
  87.             { // V
  88.                 {"*   *", "*   *", "*   *", " * * ", "  *  "}
  89.             },
  90.             { // W
  91.                 {"*   *", "*   *", "* * *", "** **", "*   *"}
  92.             },
  93.             { // X
  94.                 {"*   *", " * * ", "  *  ", " * * ", "*   *"}
  95.             },
  96.             { // Y
  97.                 {"*   *", " * * ", "  *  ", "  *  ", "  *  "}
  98.             },
  99.             { // Z
  100.                 {"*****", "   * ", "  *  ", " *   ", "*****"}
  101.             }
  102.         };
  103.         
  104.         // 根据字体大小调整输出
  105.         for (int row = 0; row < 5; row++) {
  106.             for (int i = 0; i < text.length(); i++) {
  107.                 char c = text.charAt(i);
  108.                 int letterIndex = c - 'A';
  109.                
  110.                 if (letterIndex >= 0 && letterIndex < letters.length) {
  111.                     String line = letters[letterIndex][row];
  112.                     
  113.                     // 根据字体大小调整
  114.                     for (int size = 0; size < fontSize; size++) {
  115.                         for (int j = 0; j < line.length(); j++) {
  116.                             if (line.charAt(j) == '*') {
  117.                                 System.out.print(fillChar);
  118.                             } else {
  119.                                 System.out.print(' ');
  120.                             }
  121.                         }
  122.                         if (size < fontSize - 1) {
  123.                             System.out.print(" ");
  124.                         }
  125.                     }
  126.                     System.out.print("  ");
  127.                 } else {
  128.                     // 处理非字母字符
  129.                     for (int size = 0; size < fontSize; size++) {
  130.                         for (int j = 0; j < 5; j++) {
  131.                             System.out.print(c);
  132.                         }
  133.                         if (size < fontSize - 1) {
  134.                             System.out.print(" ");
  135.                         }
  136.                     }
  137.                     System.out.print("  ");
  138.                 }
  139.             }
  140.             System.out.println();
  141.         }
  142.     }
  143. }
复制代码

9.3 练习题目

1. 创建一个程序,输出一个由数字组成的三角形图案,如下所示:1
2 3
4 5 6
7 8 9 10
2. 创建一个程序,输出一个由字母组成的菱形图案,如下所示:A
  ABA
ABCBA
ABCDCBA
ABCBA
  ABA
   A
3. 创建一个程序,输出一个螺旋方阵,如下所示:1  2  3  4
12 13 14 5
11 16 15 6
10 9  8  7
4. 创建一个程序,输出一个由不同字符组成的图案,如下所示:@@@@@
@@@@
@@@
@@
@
5. 创建一个程序,输出一个由星号组成的沙漏图案,如下所示:*********
*******
*****
  ***
   *
  ***
*****
*******
*********

创建一个程序,输出一个由数字组成的三角形图案,如下所示:
  1. 1
  2. 2 3
  3. 4 5 6
  4. 7 8 9 10
复制代码

创建一个程序,输出一个由字母组成的菱形图案,如下所示:
  1. A
  2.   ABA
  3. ABCBA
  4. ABCDCBA
  5. ABCBA
  6.   ABA
  7.    A
复制代码

创建一个程序,输出一个螺旋方阵,如下所示:
  1. 1  2  3  4
  2. 12 13 14 5
  3. 11 16 15 6
  4. 10 9  8  7
复制代码

创建一个程序,输出一个由不同字符组成的图案,如下所示:
  1. @@@@@
  2. @@@@
  3. @@@
  4. @@
  5. @
复制代码

创建一个程序,输出一个由星号组成的沙漏图案,如下所示:
  1. *********
  2. *******
  3. *****
  4.   ***
  5.    *
  6.   ***
  7. *****
  8. *******
  9. *********
复制代码

10. 总结与进阶学习

10.1 知识总结

通过本教程,我们学习了:

1. Eclipse IDE的基本使用和设置
2. Java编程基础知识,包括循环、条件语句等
3. 如何使用代码输出各种基本图案,如矩形、三角形等
4. 如何创建复杂的图案,如星形、心形和几何图形
5. 进阶技巧,包括方法封装、字符数组使用和参数化设计
6. 如何创建动态图案效果
7. 实践项目和练习,巩固所学知识

10.2 进阶学习建议

1. 学习图形用户界面(GUI)编程:尝试使用Java Swing或JavaFX创建图形界面,使图案输出更加美观和交互式。
2. 探索算法与数据结构:深入学习算法和数据结构,可以帮助您创建更复杂、更高效的图案生成算法。
3. 学习面向对象编程(OOP):将图案生成逻辑封装到类中,利用继承、多态等OOP特性提高代码的可重用性和可维护性。
4. 尝试其他编程语言:除了Java,您还可以尝试使用Python、C++或其他编程语言实现图案输出,比较不同语言的优缺点。
5. 探索数学与艺术结合:学习更多数学知识,如分形几何、曲线方程等,将数学与艺术结合,创建更加复杂和美丽的图案。

学习图形用户界面(GUI)编程:尝试使用Java Swing或JavaFX创建图形界面,使图案输出更加美观和交互式。

探索算法与数据结构:深入学习算法和数据结构,可以帮助您创建更复杂、更高效的图案生成算法。

学习面向对象编程(OOP):将图案生成逻辑封装到类中,利用继承、多态等OOP特性提高代码的可重用性和可维护性。

尝试其他编程语言:除了Java,您还可以尝试使用Python、C++或其他编程语言实现图案输出,比较不同语言的优缺点。

探索数学与艺术结合:学习更多数学知识,如分形几何、曲线方程等,将数学与艺术结合,创建更加复杂和美丽的图案。

10.3 资源推荐

1. 书籍:《Java编程思想》- Bruce Eckel《Effective Java》- Joshua Bloch《算法图解》- Aditya Bhargava
2. 《Java编程思想》- Bruce Eckel
3. 《Effective Java》- Joshua Bloch
4. 《算法图解》- Aditya Bhargava
5. 在线资源:Oracle Java教程:https://docs.oracle.com/javase/tutorial/GeeksforGeeks:https://www.geeksforgeeks.org/LeetCode:https://leetcode.com/(用于练习编程题目)
6. Oracle Java教程:https://docs.oracle.com/javase/tutorial/
7. GeeksforGeeks:https://www.geeksforgeeks.org/
8. LeetCode:https://leetcode.com/(用于练习编程题目)
9. 社区:Stack Overflow:https://stackoverflow.com/GitHub:https://github.com/(查找开源项目和示例代码)
10. Stack Overflow:https://stackoverflow.com/
11. GitHub:https://github.com/(查找开源项目和示例代码)

书籍:

• 《Java编程思想》- Bruce Eckel
• 《Effective Java》- Joshua Bloch
• 《算法图解》- Aditya Bhargava

在线资源:

• Oracle Java教程:https://docs.oracle.com/javase/tutorial/
• GeeksforGeeks:https://www.geeksforgeeks.org/
• LeetCode:https://leetcode.com/(用于练习编程题目)

社区:

• Stack Overflow:https://stackoverflow.com/
• GitHub:https://github.com/(查找开源项目和示例代码)

通过不断学习和实践,您将能够掌握更多高级的图案输出技巧,并创造出令人惊叹的代码艺术作品。祝您编程愉快!
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则