[英]Print a text pattern in java
我需要以表格形式打印图案
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循环之间,但是我不知道该怎么做。 它困扰了我一段时间。
我给你提示,算一下空格:
对于第1行:1个空格
对于第2行:3个空格
第3行:5个空格
对于第4行:7个空格
等,看到模式? :)
是的,在现有循环之间再增加一个“循环空间”。
Spoiler ALERT,这是Java解决方案,但是请尝试在没有它的情况下进行操作。
这是完全有效的代码,它也适用于任何大小的array:
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
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();
}
即使有(已经)已经解决的一些解决方案,太多的循环也会增加复杂性:
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
数组可以随时增加,输出将是“相同的”(就格式而言)。
模式的每一行都是固定宽度:13个字符。 这意味着,如果您打印j
字符(外循环的索引),则需要打印13-2*j
空格。
for (int k=0; k<13-2*j; k++){
System.out.print(" ");
}
在这里,我使用一个新的变量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();
}
请为变量使用专有名称。 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.