用于循环哈希字符模式

时间:2014-09-23 15:16:52

标签: c# for-loop

您好我是编程新手,我目前有这段代码:

   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开始,但每次我进入一个新线时我需要增加一个额外的空间。我该怎么做才能输出如下?

########
 ######
  ####
   ## 

谢谢, 乌默尔

4 个答案:

答案 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(" ");    
            }

        }