在java中打印文本模式

Ric*_*cky 0 java

我需要在表单中打印图案

   ABCDEF FEDCBA
   ABCDE   EDCBA
   ABCD     DCBA
   ABC       CBA
   AB         BA
   A           A
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

   public static void main(String args[])
{
    char[] c = {'A','B','C','D','E','F','G'};
    int i, j;

    for(j = 5; j >= 0; j--)
    {
        for(int k = 0; k <= j; k++)
        {
            System.out.print(c[k]);
        }
        for(i = j; i >= 0; i--)
        {
            System.out.print(c[i]);
        }

        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我输出

   ABCDEFFEDCBA
   ABCDEEDCBA
   ABCDDCBA
   ABCCBA
   ABBA
   AA
Run Code Online (Sandbox Code Playgroud)

达到此输出相当容易.但是,我无法提供空间.我知道产生空间的循环将介于两个for循环之间,但我无法弄清楚如何做到这一点.它困扰我一段时间.

lib*_*bik 5

我给你提示,计算空格:

对于第1行:1行

对于第2行:3个空格

对于第3行:5个空格

对于第4行:7个空格

等,看模式?:)

是的,在现有的周期之间增加一个"循环空间".


Spoiler ALERT,这是Java解决方案,但没有它就尝试这样做.

这是完全可用的代码,它也适用于任何大小的数组:

public static void main(String args[]) {
    char[] c = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'Y', 'Z'};
    int i, j;

    for (j = c.length-1; j >= 0; j--) {
        for (int k = 0; k <= j; k++) {
            System.out.print(c[k]);
        }
        for (int k = 0; k < (c.length-j)*2 - 1; k++) {
            System.out.print(" ");
        }
        for (i = j; i >= 0; i--) {
            System.out.print(c[i]);
        }

        System.out.println();
    }
}
Run Code Online (Sandbox Code Playgroud)

样本输出:

ABCDEFGYZ ZYGFEDCBA
ABCDEFGY   YGFEDCBA
ABCDEFG     GFEDCBA
ABCDEF       FEDCBA
ABCDE         EDCBA
ABCD           DCBA
ABC             CBA
AB               BA
A                 A
Run Code Online (Sandbox Code Playgroud)