您好我是编程新手,我目前有这段代码:
namespace Patterns
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 4; i++)//'rows'
{
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("\n" );
}
}
}
}
这会产生此输出:
########
######
####
##
哈希的数量是正确的,因为我从8,6,4,2开始,但每次我进入一个新线时我需要增加一个额外的空间。我该怎么做才能输出如下?
########
######
####
##
谢谢, 乌默尔
答案 0 :(得分:1)
从代码中你可以修改它以在内部for循环中执行以下操作:
for (int j = 0; j < i - 1; j++) {
Console.Write(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++) {
Console.Write("#");
}
Console.WriteLine("\n" );
作为一个注释,您应该使用StringBuilder来执行此操作,因为我认为不断调用Console.WriteLine是非常低效的。
可以进一步修改代码:
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 4; i++) {
for (int j = 0; j < i - 1; j++) {
sb.append(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++) {
sb.append("#");
}
sb.append("\n" );
}
Console.WriteLine(sb.toString());
答案 1 :(得分:0)
介绍变量,在0和repeat the string for each row number开始行。
这也可以应用于打印哈希的字符串:
static void Main(string[] args)
{
int rows = 4;
int columns = 9;
for (int i = 0; i < rows; i++)
{
// Print a string with `i` spaces.
Console.Write(new String(' ', i));
int hashes = columns - ((i + 1) * 2) + 1;
Console.Write(new String('#', hashes));
Console.WriteLine();
}
}
答案 2 :(得分:0)
基本上,只需在哈希字符前面添加空格。
######## Row 1 (i=1), 0 Space
###### Row 2 (i=2), 1 Space
#### Row 3 (i=3), 2 Spaces
## Row 4 (i=4), 3 Spaces
在这种情况下,你需要&#34; i-1&#34;每行的空格。 (实际上,它(8 - 字符数)/ 2)和字符数是9 - (i * 2)+ 1,所以(8 - 9 + i * 2 - 1)/ 2 =(i * 2 - 2)/ 2 = i - 1) 所以只需在打印哈希字符之前创建循环以添加空格。
namespace Patterns
{
class Program
{
static void Main(string[] args)
{
for (int i = 1; i <= 4; i++)//'rows'
{
for (int j = 0; j < i -1; j++) {
Console.Write(" ");
}
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("\n" );
}
}
}
}
答案 3 :(得分:0)
你可以这样做:
for (int i = 1; i <= 4; i++)//'rows'
{
for (int h = 1; h <= 9 - (i*2)+1; h++)
{
Console.Write("#");
}
Console.WriteLine("\n" );
for (int y = i; y > 0; y--)
{
Console.Write(" ");
}
}