首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用java以菱形图案打印菱形图案

使用java以菱形图案打印菱形图案
EN

Stack Overflow用户
提问于 2019-06-13 02:55:54
回答 1查看 298关注 0票数 0

我想打印出这样的图案,但我不能把它打印出来。我遇到的最大问题是菱形外部的线条和菱形中只有空格的部分。我已经将我的输出标记为白色,不同的数字来标记区域,所以我知道谁在做什么。我希望有人能帮上忙。

下面是我的代码:

代码语言:javascript
复制
public static void main(String[] args) {

        int rows1 = 10;
        System.out.println("## Printing the pattern ##");

        for (int i=1; i<=rows1; i++)
        {
            // Print space in decreasing order övre väster hörn tomrum
            for (int j=rows1; j>i; j--)
            {
                System.out.print(" 1 ");
            }


            // Print star in increasing order övre inre delen av triangeln tomrum
            for (int k=1; k<=(i * 2) -1; k++)
            {
                if( k == 1 || k == (i * 2) -1)
                    System.out.print("*");
                else
                    System.out.print(" 2 ");
            }
            System.out.println();
        }
        for (int i=rows1-1; i>=1; i--)
        {
         // Print space in increasing order nedre västra härnet tomrum
            for (int j=rows1-1; j>=i; j--)
            {
                System.out.print(" 3 ");
            }
            // Print star in decreasing order nedre inre delen av triangeln
            for (int k=1; k<=(i * 2) -1; k++)
            {
                if( k == 1 || k == (i * 2) -1 )
                    System.out.print("*");
                else
                    System.out.print(" 4 ");
            }


            System.out.println();
        }

}

How I want it to look or near it

EN

回答 1

Stack Overflow用户

发布于 2019-06-13 04:30:32

这个类打印图片中的图像。基本思想是使用菱形的中线(左侧部分)来创建表单的其余部分。

代码语言:javascript
复制
public class Diamond {

    private String base;

    public Diamond(String base) {
        this.base = base;
    }

    private String reverse(String s) {
        return new StringBuilder(s).reverse().toString();
    }

    public void print() {

        int l = base.length();
        int c = (l/2)-1;

        String[] diamond = new String[l-1];
        diamond[c] = base + " " + reverse(base);

        String next = "/ " + base;
        for (int i = 1; i < l/2; i++) {

            String center = " ";
            if (next.endsWith("  ") == false) {
                center = "O";
            }

            next = next.substring(0, l);
            String bottom = next.replace('/', '\\');
            String bottomRight = reverse(next);
            String right = bottomRight.replace('/', '\\');

            diamond[c-i] = next + center + right;
            diamond[c+i] = bottom + center + bottomRight;

            next = "  " + next;
        }

        for (String line : diamond) {
            System.out.println(line);
        }
    }

    public static void main(String[] args) {
        new Diamond("  O O O O O     O O O       ").print();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档