Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要解决倒置渲染问题?_C#_For Loop_Console_Nested_Rendering - Fatal编程技术网

C# 要解决倒置渲染问题?

C# 要解决倒置渲染问题?,c#,for-loop,console,nested,rendering,C#,For Loop,Console,Nested,Rendering,我写了这段C#来帮助我理解如何使用嵌套for循环来呈现二维数据 下面是输出的样子 ████ ███ ██ █ 我想让上面的4个块在底部渲染,基本上是以相反的顺序渲染,这样台阶就会上升。然而,控制台窗口只呈现向下,因此传统的想法是不正确的。下面是我的代码 static void Main(string[] args) { int i = 0; int j = 0; for (i = 0; i < 4; i++) {

我写了这段C#来帮助我理解如何使用嵌套for循环来呈现二维数据

下面是输出的样子

████
███
██
█
我想让上面的4个块在底部渲染,基本上是以相反的顺序渲染,这样台阶就会上升。然而,控制台窗口只呈现向下,因此传统的想法是不正确的。下面是我的代码

static void Main(string[] args)
    {
        int i = 0;
        int j = 0;

        for (i = 0; i < 4; i++) 
        {
            Console.Write('\n');
            for (j = i; j < 4; j++) 
            {
                Console.Write("█");
            }
        }
        Console.ReadKey();
    }

最简单的方法是:只需反转内部循环条件并减少计数器,而不是增加它:

    for (i = 0; i < 4; i++) 
    {
        Console.Write('\n');
        for (j = i; j >= 0; j--) 
        {
            Console.Write("█");
        }
    }
    Console.ReadKey();
对于从右到左的版本:

    for (i = 0; i < 4; i++) 
    {
        for(j = 0; j < 4; j++)
        {
            if(j < 3 - i)
                Console.Write(" ");
            else
                Console.Write("█");
        }
        Console.Write('\n');
    }
    Console.ReadKey();
您需要将循环条件从inremant反转为decremant

for (i = 0; i < 4; i++) 
{
    Console.Write('\n');
    for (j = i; j >= 0; j--) 
    {
        Console.Write("█");
    }
}

这里有一个

应该是:

  for (j = 3 - i; j < 4; j++)
  {
       Console.Write("█");
  }
(j=3-i;j<4;j++)的

{
控制台。写入(“█");
}
课程计划
{
常数int维=4;
静态void Main(字符串[]参数)
{
char[]块=新字符[维度];
对于(int j=0;j
我认为这实际上可以做0,1,2,3而不是1,2,3,4?最简单的改变,但如果你编辑它,这是最好的答案。所有代码都按顺序执行。要在顶部写最长的块,你必须先写。除非你想进入图形渲染引擎和poin,否则没有办法最后写,但仍然在顶部t drawing…Soner,谢谢你,这为我指明了我想走的方向,不管这些台阶是怎么下降的,我都希望它们朝另一个方向走。如果我没有说清楚,我很抱歉。我会接受你的想法,然后应用它,看看还能怎么做!再次感谢!@MonteEmerson你想上楼到右边吗?你的问题是顺便说一句,我不清楚。是的,我知道我很抱歉,我修改了它。不,我和@Soner开了个玩笑。我的答案是你想要的-你自己已经写出来了-你需要从写空格开始。谢谢你的帮助Soner!还有一个是上升的步骤;谢谢你的帮助Hugh!@Monte Emerson-看到我的答案了吗
   █
  ██
 ███
████
for (i = 0; i < 4; i++) 
{
    Console.Write('\n');
    for (j = i; j >= 0; j--) 
    {
        Console.Write("█");
    }
}
   public static void Main(string[] args)
    {
        int i = 0;
        int j = 0;
        for ( i = 0; i < 4; i++ )
        {
            for ( j = 0; j < 4; j++ )
            {
                if ( j < 3 - i )
                    Console.Write(" ");
                else
                    Console.Write("█");
            }
            Console.Write('\n');
        }

        Console.ReadKey();
    }
  for (j = 3 - i; j < 4; j++)
  {
       Console.Write("█");
  }
class Program
{
    const int Dimension = 4;

    static void Main(string[] args)
    {
        char[] blocks = new char[Dimension];
        for (int j = 0; j < Dimension; j++)
            blocks[j] = ' ';

        for (int i = 0; i < Dimension; i++)
        {
            blocks[Dimension - i - 1] = '█';

            for (int j = 0; j < Dimension; j++)
                Console.Write(blocks[j]);

            Console.WriteLine();
        }
        Console.ReadKey();
    }
}