我需要在表单中打印图案
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循环之间,但我无法弄清楚如何做到这一点.它困扰我一段时间.
我给你提示,计算空格:
对于第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)