我画了一个假的圣诞树(java第一版)

简介: 我画了一个假的圣诞树(java第一版)

简单思路

用*表示树冠

1、第一层一个、第二层三个、第三层五个,也就是说每层都会在他的上一层加两个星星

2、第一层的星星在中间。也就是第一层横线最多。第二层比第一层横线少一。思路有了接下来是代码。

3、盆的话  大家可以自由发挥。

想想中的

         *

      ***

     *****

    *******

   *********

  ***********

 *************

***************

*****************

       *

       *

       *

       *

       *

 【----*----】

 【----*----】

 【---------】

 

 

 

 

----------*

---------***

--------*****

-------*******

------*********

-----***********

----*************

---***************

--*****************

-*******************

*********************

         *

         *

         *

         *

         *

/**

* 星星

* 星星每层加2

* 是在上一层的基础上加2

* 第一层一个 第二层3个

* 第三层5个

* 依次类推 取值都为奇数 看起来圣诞树会有层次感

*

* @param in

* @return

*/

public static String starsSum(int in, String strStars) {

   String tempStars = "";

   in = in + 2;

   for (int i = 0; i < in; i++) {

       tempStars = tempStars + strStars;

   }

   return tempStars;

}


/**

* 标尺

* 标尺每层减一

* 标尺第一层就是最多的一层

* 依次递减

*

* @param inCount 第几层

* @return

*/

public static String symbolsSum(int inCount, String strRuler) {

   String tempSymbols = "";

   for (int i = 0; i < inCount; i++) {

       tempSymbols = tempSymbols + strRuler;

   }

   return tempSymbols;

}

/**

* 画树干

*

* @param inLayer 圣诞树树杉行数

* @param inRow   树干有多高

* @param strType 树干类型(样式)

* @return

*/

public static String drawTrunk(int inLayer, int inRow, String strType) {

   String strNull = "";

   for (int i = 0; i < inLayer; i++) {

       strNull = strNull + " ";

   }

   StringBuffer sbTrunk = new StringBuffer();

   for (int i = 0; i < inRow; i++) {

       sbTrunk.append(strNull).append(strType).append("\n");

       System.out.println(strNull + strType);

   }

   return sbTrunk.toString();

}

/**

    * 开始画圣诞树

    *

    * @param inLayer  圣诞数层数

    * @param inRow    圣诞树干多高

    * @param strType  圣诞树样式    *

    * @param strRuler 标尺- 也可以空格

    * @return

    */

   public static String drawChristmasTree(int inLayer, int inRow, String strType, String strRuler) {

       //标尺

       int tempIn = inLayer;

       //记录每行的星星

       String tempStars = "";

       String strBasin = "";

       //返回的一个圣诞树

       StringBuffer sbChristmasTree = new StringBuffer();

       for (int i = 0; i < inLayer; i++) {

           String strSymbols = symbolsSum(tempIn--, strRuler);

           System.out.print(strSymbols);

           sbChristmasTree.append(strSymbols);

           //第一层 画一个星星

           if (i == 0) {

               System.out.print(strType);

               sbChristmasTree.append(strType).append("\n");

               System.out.println();

               tempStars = strType;

           } else {

               //当前行包含多少个*

               int i1 = StringUtils.countMatches(tempStars, strType);

               tempStars = starsSum(i1, strType);

               System.out.println(starsSum(i1, strType));

               sbChristmasTree.append(tempStars).append("\n");

           }

       }

       //最后一行补充

       int i = StringUtils.countMatches(tempStars, strType);

       tempStars = starsSum(i, strType);

       System.out.println(starsSum(i, strType));

       sbChristmasTree.append(tempStars).append("\n");

       //树干

       String strTrunk = drawTrunk(inLayer, inRow, strType);

       sbChristmasTree.append(strTrunk).append("\n");

       return sbChristmasTree.toString();

   }

public static void main(String[] args) {

   drawChristmasTree(10, 5, "*", "-");

}

写的不好  希望大家多多指正


相关文章
|
1月前
|
存储 Java
1038. 从二叉搜索树到更大和树 --力扣 --JAVA
给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左右子树也必须是二叉搜索树。
42 1
|
4天前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
16 4
|
1月前
|
Java
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
Tree Traversals Again(Java语言)(先序和中序创建二叉树)(遍历树)
28 4
|
4天前
|
算法 Java 机器人
Java数据结构与算法:AVL树
Java数据结构与算法:AVL树
|
11天前
|
存储 安全 Java
深入解析Java HashMap的高性能扩容机制与树化优化
深入解析Java HashMap的高性能扩容机制与树化优化
11 1
|
24天前
|
Java
JAVA中的AVL树实现
JAVA中的AVL树实现
13 1
|
20天前
|
算法 Java Go
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 100. 相同的树(Java/C/Python3/Go实现含注释说明,Easy)
8 0
|
1月前
|
SQL Java 关系型数据库
java 递归返回树形组织结构(附带树形菜单的搜索)
java 递归返回树形组织结构(附带树形菜单的搜索)
39 0
|
1月前
|
存储 人工智能 Java
Java 构建树型结构
Java 构建树型结构
|
1月前
|
Java
AVL树(Java)
AVL树(Java)
36 0