苦苦寻求打印。我知道它应该是两个for循环来打印重复的字母,但是,有问题缩进行。它应该是一个简单的控制台C#程序,用输入3打印出如下形状。
XXXXX
XXX
X
输入4应该是
XXXXXXX
XXXXX
XXX
X
这是我的代码。两个for循环正确地获得了字母,但是所有的行都排在左边,而不是中心。
static void Main(string[] args)
{
string num = Console.ReadLine().Trim();
int n = Convert.ToInt32(num);
int k=1;
for(int i = n; i>=1; i--)
{
Console.WriteLine("\n");
Console.WriteLine("".PadLeft(n));
for (int j = (2*i-1); j>=1;j--)
{
Console.Write("0");
}
}
Console.Read();
}
答案 0 :(得分:0)
声明:
Console.WriteLine("".PadLeft(n));
是正确的想法,但它并不存在。
在您的情况下,n
是您要打印的行数并且是不变的。每行开头所需的空格数应从零开始,每行增加一个。
在任何情况下,打印任何空格后跟换行符(因为它的WriteLine
)不是你想要的,你应该使用Write
代替。
因此,int n = Convert.ToInt32(num);
和Console.Read();
之间的代码会更好:
for (int lineNum = 0; lineNum < n; lineNum++) {
int spaceCount = lineNum;
int xCount = (n - lineNum) * 2 - 1;
Console.Write("".PadLeft(spaceCount));
Console.WriteLine("".PadLeft(xCount, 'X'));
}
您会注意到其他一些变化。首先,我使用了更有意义的变量名称,我可以使用i
在某些情况下使用PadLeft
,但我经常发现它使用描述性更具可读性名。
我也使用X
来执行apikey
字符串,以便不再需要内循环。