java - 绘制带有制表符和星号的 Java 圣诞树

标签 java tree

我需要绘制一棵具有给定 n 行数的 java 圣诞树,但不是通常这样绘制的:

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

但像这样,带有分隔选项卡:

             *
         *      *
    *        *      *
*        *       *      *

到目前为止我的代码是这样的:

 public static void main(String[] args) {
        int i =5;                           
        for(;i!=0;i--) {
            for(int j=0; j!=i; j++);        
                System.out.print("\t\t*");

我终于自己写了代码:

int x = 5;
        for(int i=1; i<=x; i++)
        {
            for (int k=0; k<x-i; k++)
            {
                System.out.print("\t");
            }
            for (int j=0; j<i; j++)
            {

              System.out.print( "\t*\t" );
            }
                System.out.println("");
        }

    }

}

最佳答案

这会将星星排成行

public static void main(String[] args)
{

    int n = 6;
    int i = 0;
    int pad = 7;
    while (i < n) 
    {

        String star = new String(new char[1 + i *2]).replace("\0", "*\t");
        String space = new String(new char[1 + pad]).replace("\0", "\t");
        System.out.printf(space + star + "\n");
        ++i;
        --pad;
    }

}

编辑 这将根据您的演示交替使用它们

public static void main(String[] args)
{
    final int it = 5;
    int pad = it;
    int i = 0;
    String space;
    while (i < it) {
        String star = new String(new char[i + 1]).replace("\0", "*\t\t");

        space = new String(new char[pad]).replace("\0", "\t");

        System.out.printf(space + star + "\n");
        ++i;

        --pad;

    }

}

for循环完成

public static void main(String[] args)
{
    //final int it = 5;
    int size;
    size = 5;

    for( int i = 1;  i < size; ++i)
    {
        String star = "";
        for (int p = size; p > i; --p)
        {
            star += "\t";
        }
        for (int j = 0; j < i; ++j)
        {
            star += "*\t\t";
        }

        System.out.println(star);


    }

}

仅使用 2 个循环的另一种解决方案

public static void main(String[] args)
{
    //final int it = 5;
    int size;
    size = 5;
    List<String> pad = new ArrayList<String>();
    pad.addAll(Arrays.asList("\t","\t","\t","\t","\t"));
    for( int i = 1;  i < size; ++i)
    {
        String star = "";
        //Pattern p = Pattern.compile("([)|(,)|(])");
        star += pad.toString().replaceAll("\\[|\\]|,", "");
        for (int j = 0; j < i; ++j)
        {
            star += "*\t\t";
        }
        pad.remove(pad.size()-1);
        System.out.println(star);

    }

}

关于java - 绘制带有制表符和星号的 Java 圣诞树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964918/

相关文章:

java - 最有效的图像显示方式

java - 有没有办法使用 java 8 替换列表中的 Map 值?

algorithm - 树中从根到叶子的预期最大路径长度

python - 如何在python中显示类似于msdos tree命令的树?

c++ - 二叉树 : iterative inorder print

java - java 8 的多线程示例

java - Swagger(-ui) 不显示操作

java - 如何逆时针旋转数组并将其垂直反转?

list - F# 树叶列表与连续尾递归

data-structures - 模拟 parking 场可用空间的数据结构