Печать ромба в ромбах с использованием Java - PullRequest
0 голосов
/ 12 июня 2019

Я хочу напечатать такой шаблон, но не могу заставить его работать. Большая проблема, с которой я сталкиваюсь - это линии снаружи алмаза и части в алмазе, где есть только пробелы. Я пометил свои выходные белые цифры, чтобы пометить области, чтобы я знал, какую часть кто что делает. Я надеюсь, что кто-то может помочь, пожалуйста.

Вот мой код:

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();
        }

}

Как я хочу, чтобы это выглядело или рядом

1 Ответ

0 голосов
/ 12 июня 2019

Этот класс печатает изображение на картинке. Основная идея заключается в том, что вы используете (левую часть) среднюю линию ромба, чтобы создать остальную часть формы.

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...