我需要以
形式打印图案 ABCDEF FEDCBA
ABCDE EDCBA
ABCD DCBA
ABC CBA
AB BA
A A
以下是我的代码:
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();
}
}
其中输出为
ABCDEFFEDCBA
ABCDEEDCBA
ABCDDCBA
ABCCBA
ABBA
AA
达到此输出相当容易。但是,我无法提供空间。我知道产生空间的循环将介于两个for循环之间,但我无法弄清楚如何做到这一点。它困扰了我一段时间。
答案 0 :(得分:5)
我给你提示,计算空格:
第1行:1个空格
第2行:3个空格
对于第3行:5个空格
第4行:7个空格
等等,看模式? :)是的,再多放一个&#34;空间用于循环&#34;在现有的周期之间。
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();
}
}
示例输出:
ABCDEFGYZ ZYGFEDCBA
ABCDEFGY YGFEDCBA
ABCDEFG GFEDCBA
ABCDEF FEDCBA
ABCDE EDCBA
ABCD DCBA
ABC CBA
AB BA
A A
答案 1 :(得分:2)
char[] c = {'A','B','C','D','E','F','G'};
int i, j,n,p=1;
for(j = 5; j >= 0; j--)
{
for(int k = 0; k <= j; k++)
{
System.out.print(c[k]);
}
for(n = 1; n <= p; n++)
System.out.print(" ");
p+=2;
for(i = j; i >= 0; i--)
{
System.out.print(c[i]);
}
System.out.println();
}
答案 2 :(得分:2)
即使有一些(已经)回答的解决方案,太多的循环会增加复杂性:
char[] c = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' };
for (int i = 0; i < c.length; i++) {
String tmp = String.valueOf(c).substring(0, c.length - i);
System.out.printf("%s %" + (c.length + i) + "s%n", tmp, new StringBuilder(tmp).reverse());
}
的输出强>
ABCDEFG GFEDCBA
ABCDEF FEDCBA
ABCDE EDCBA
ABCD DCBA
ABC CBA
AB BA
A A
您的char
数组可以随时增加,输出“相同”(就格式而言)。
答案 3 :(得分:1)
图案的每一行都是固定宽度:13个字符。这意味着如果您打印j
个字符(外部循环的索引),则需要打印13-2*j
个空格。
for (int k=0; k<13-2*j; k++){
System.out.print(" ");
}
答案 4 :(得分:1)
我最初使用新变量max
来设置j
。此变量用于空间的len
计算。
char[] c = {'A','B','C','D','E','F','G'};
int i, j;
int max = 5; //your max output (could be 6)
for(j = max; j >= 0; j--)
{
for(int k = 0; k <= j; k++)
{
System.out.print(c[k]);
}
int len = max*2+1; //length calculation
for(int x = 0; x < len-2*j; x++){ //space loop
System.out.print(" ");
}
for(i = j; i >= 0; i--)
{
System.out.print(c[i]);
}
System.out.println();
}
答案 5 :(得分:0)
请为变量使用专有名称。 Java不是Basic,因此如果您愿意,最多可以使用变量名中的65,535个字符。
通过代码编写文档可以帮助那些必须在将来维护代码的人。
public class PrintChars {
public static void main(String args[]) {
char[] chars = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' };
int length = chars.length;
for (int row = length; row > 0; row--) {
for (int left = 0; left < row; left++) {
System.out.print(chars[left]);
}
for (int space = 0; space < (length-row)*2+1; space++) {
System.out.print(' ');
}
for (int right = row-1; right >= 0; right--) {
System.out.print(chars[right]);
}
System.out.println();
}
}
}
输出:
ABCDEFGH HGFEDCBA
ABCDEFG GFEDCBA
ABCDEF FEDCBA
ABCDE EDCBA
ABCD DCBA
ABC CBA
AB BA
A A