对于家庭作业,我需要帮助来概括用于打印以下图案的代码。
A
B C
D E F
G H I J
问题在于对字母表之间的空格进行编码
这就是我提出的,但它仅适用于模式的前4行。
(对不起,我的格式化技巧很差>。>)
int r = 65;
char m ;
int count=0;
for(int i = 4;i>0;i--)
{
for( int j = i;j>0;j--)
{System.out.print(" ");}
for(int j = 4-i;j>=0;j--)
{
count++;
m=(char)r;
if(count == 3||count == 6||count == 8 || count == 11|| count == 13|| count ==15)
{
System.out.print(" ");r--;
}
else
System.out.print(m);r++;
}
for(int j = 4-i;j>0;j--)
{
count++;m=(char)r;
if(count == 3||count == 6||count == 8 || count == 11|| count == 13|| count ==15)
{
System.out.print(" ");r--;
}
else
System.out.print(m);r++;
}
System.out.println("");
}
感谢Gene的解释,我做了一些编辑,这就是我想出的。
int r = 65;
char m ;
for(int i = 4;i>0;i--)
{
for( int j = i;j>0;j--)
{System.out.print(" ");}
for(int j = 4-i;j>=0;j--)
{
m=(char)r;
System.out.print(m+" ");
r++;
}
System.out.println("");
}
答案 0 :(得分:1)
编写循环就是使用数学(通常是简单的数学)来描述循环指示的一次迭代。
让N
为行数,以便i=0,1,...N-1
为其索引。
首先,您的示例显示行i
具有N-i-1
个前导空格。我们来看看吧。对于行i=N-1
,我们得到零;对于i=0
,我们得到N-1
。在你的例子中,i=0
的情况是3.这与绘图一致,所以我们看起来很好。
第二部分是每行有i+1
个字符。除了最后一个以外,所有人都有以下空间最后一个有以下换行符。
最后,我们只需从A开始就可以得到正确的字母,并在每次打印新字母时递增。
所以现在我们已经准备好编写代码了:
char ltr = 'A';
for (int i = 0; i < N; i++) {
// Print the leading spaces.
int nLeadingSpaces = N - i - 1;
for (int j = 0; j < nLeadingSpaces; j++)
System.out.print(' ');
// Print the letters for this row. There are
// i+1 of them. So print the first i with a following
// space and the last one with a newline.
for (int j = 0; j < i; j++)
System.out.print(ltr++ + " ");
System.out.println(ltr++);
}
这是未经测试但应该有用。
答案 1 :(得分:-1)
您需要两个(嵌套)循环。
行号的外部。
行中位置的内部。
您需要在循环外为当前字符定义的变量。
在内部循环的开头,根据最大行写出空格 - 当前行号* const(自己计算出const)。
在内部循环中输出当前字符和空格。
在内循环结束时增加输出字符。
在外循环结束时,进入下一行。